在wamp服务器中安装SSL:httpd-ssl.conf中的错误

时间:2014-10-07 12:45:34

标签: ssl ssl-certificate wampserver apache2.4

我正在尝试在本地主机上设置ssl我已经跟随http://madurad.wordpress.com/2014/04/25/redirect-http-to-https-with-wamp-server/和其他许多人但是无法获得成功。我坚持使用httpd-ssl.conf的语法。我设置

时,我的apache服务器停机了
<Directory "c:/wamp/www/"> 
   Options Indexes FollowSymLinks  
   AllowOverride all 
   Require all granted 
   SSLOptions +StdEnvVars
</Directory>

我尝试了许多其他的

<Directory "c:/wamp/www/"> 
   SSLOptions +StdEnvVars
</Directory>

什么是无法获得的问题......

7 个答案:

答案 0 :(得分:70)

如何配置WAMPServer以使用HTTPS SSL

*这不是一个简单的过程。希望本教程能让SSL为您服务。 但是,一旦它正常工作就正确配置它完全是你的下载。

Additional reading for all who travel this road

确定,

我的本​​教程基于创建一个名为www.wamphelpers.dev的网站。因此,当您看到该名称将其更改为您尝试保护的网站名称时。

我首先在\ wamp \ www \ wamphelpers

中创建了一个不安全的网站

\wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf

中为该网站添加了虚拟主机
<VirtualHost *:80>
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory  "c:/wamp/www">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/wamphelpers"
    ServerName wamphelpers.dev
    ServerAlias www.wamphelpers.dev
    <Directory  "c:/wamp/www/wamphelpers">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

将其域名添加到C:\ windows \ system32 \ drivers \ etc \ hosts

某些病毒检查程序阻止访问HOSTS文件,因此您可能需要禁用病毒检查程序,或将其配置为暂时不阻止主机文件

127.0.0.1 wamphelpers.dev www.wamphelpers.dev
::1       wamphelpers.dev www.wamphelpers.dev

现在从使用&#39;以管理员身份运行的命令窗口重启dnscache,如下所示

net stop dnscache
net start dnscache

然后在\ wamp \ www \ wamphelpers \ index.php

中创建了一个简单的脚本
<?php
    echo 'Hello, this is the WAMPHELPERS.DEV site homepage';
?>

现在要激活您已定义的新虚拟主机,请编辑\wamp\bin\apache\apache{version}\conf\httpd.conf并找到此行

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

并删除#评论字符,如此

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

保存文件。

现在重新启动Apache并确保您的简单无担保虚拟托管网站正常工作>。


openssl工具包。 openssl.exe,ssleay32.dll和libeay32.dll附带,位于C:\ wamp \ bin \ apache \ apachex.y.z \ bin文件夹中 这应该是创建自签名证书所需的全部内容!!

HOWEVER:这些在我安装的任何Apache版本上都不起作用。 我总是收到此错误消息。

error message

根据我所在的apache版本文件夹,序号发生了变化。

如果您收到此错误,请不要担心这是您需要做的事情。

安装最新版本的OPENSSL TOOLKIT

可以获得from here

注意:不要使用V1.1版本,PHP团队还没有用这些新的链接编译PHP,所以坚持使用V1.0。版本直到它们。

选择最新版本的Win32 OpenSSLv xxx Light&#39;或者&#39; Win64 OpenSSLv xxx Light&#39;以匹配您安装的WAMPServer版本,因为这就是您所需要的。

这将下载一个.exe文件,您可以运行该文件来安装此工具包。

它会问下面这个问题,我建议你这样回答,所以你最后不要在C:\ windows \ system32中安装一些东西。 毕竟这是一个工具包,它经常变化。最好将这些东西分开,不要让它们成为全球系统。

openssl install suggestion

安装完成后(对于您在安装中指定的任何文件夹),您应该已准备好开始生成密钥和证书的过程!


生成密钥和证书。

第1步:生成RSA私钥

首先,我们需要创建自己的证书。 正常(付费)流程是创建证书,然后将其传递给签名机构。 这就是为什么花钱,因为他们必须做,尽职尽责,检查你是谁,你将使用证书是真实和合法的。

openssl工具包用于生成RSA私钥和CSR(证书签名请求)以用于我们的证书。 第一步是创建RSA私钥。 此密钥是1024位RSA密钥,使用Triple-DES加密并以PEM格式存储,以便以ASCII文本形式读取。

使用[b]以管理员身份运行[/ b]打开命令窗口(Dos框) 将目录更改为上面安装OpenSSL Toolkit的位置。    在我的情况下,这是

CD c:\apps\OpenSSL-Win32\bin

为要输入的输出创建一个文件夹(以保持bin文件夹整洁)我使用的网站

md website

现在输入以下命令:

openssl genrsa -out website\server.key 2048

这应该在名为server.key的网站文件夹中创建一个文件,没有密码短语,检查它是否存在。

第2步:生成CSR(证书签名请求)

在生成CSR期间,系统将提示您输入多条信息。 这些是证书的X.509属性。 其中一个提示将是&#34;公共名称(例如服务器FQDN或您的名字)[]:&#34;。 请务必使用受SSL保护的服务器的完全限定域名填写此字段。 因此,如果要保护的网站为https://www.wamphelpers.dev,请在此提示下输入www.wampheplers.dev。我使用wamphelper.dev作为ServerName ServerName wamphelpers.dev

请勿在问题中输入任何内容:质询密码[]:]只需按Enter即可。 如果您在此处输入密码,当您使用SSL启动Apache时,Apache将无法启动并将显示以下错误消息: -

[error] Init:Win32不支持SSLPassPhraseDialog内置

基本上,如果你确实输入了密码,那么Apache每次启动时都应该挑战你的密码。 这显然不会让你的生活变得更轻松,但主要是在Windows上它实际上并不起作用 导致Apache在尝试请求密码短语时崩溃,并出现上述错误。

生成CSR的命令如下:

openssl req -new -key website\server.key -out website\server.csr


Example question and answers:
Country Name (2 letter code) [AU]:GB
State or Province Name (full name) [Some-State]: Hampshire
Locality Name (eg, city) []: Portsmouth
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Wamp Helpers Ltd
Organizational Unit Name (eg, section) []: Information Technology
Common Name (e.g. server FQDN or YOUR name) []: wamphelpers.dev
Email Address []: me@wamphelpers.dev

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ( leave blank just hit the enter key )
An optional company name []: ( leave blank just hit the enter key )

第3步:生成自签名证书

此时您需要生成自签名证书,因为 您要么不打算让您的证书由CA签名,要么您希望进行测试 在CA签署证书时,您的新SSL实施。

预警 - 此证书将在客户端浏览器中生成错误 签名证书颁发机构未知且不受信任。 这是不可避免的,因为我们自己签署证书,但当然信任网络不知道我们是谁。 请参阅本文档后面的示例,其中显示了如何告诉您的浏览器您确实信任此证书

openssl x509 -req -days 365 -in website\server.csr -signkey website\server.key -out website\server.crt


Example output:
Loading 'screen' into random state - done
Signature ok
subject=/C=GB/ST=Hampshire/L=Portsmouth/O=WampHelpers Ltd/OU=Information Technology/CN=www.wamphelpers.dev/emailAddress=riggsfolly@wamphelpers.dev
Getting Private key

第4步:安装私钥和证书

在您正在使用的Apache版本下创建这两个目录。

md c:\wamp\bin\apache\apachex.y.z\conf\ssl.key
md c:\wamp\bin\apache\apachex.y.z\conf\ssl.crt

将我们刚刚生成的文件复制到其中:

copy website\server.crt c:\wamp\bin\apache\apachex.y.z\conf\ssl.crt
copy website\server.key c:\wamp\bin\apache\apachex.y.z\conf\ssl.key

步骤5:配置Apache以激活SSL

编辑httpd.conf,检查此行是否已取消注释

LoadModule authn_socache_module modules/mod_authn_socache.so

LoadModule ssl_module modules/mod_ssl.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

删除评论&#39;#&#39;从这一行也

Include conf/extra/httpd-ssl.conf

然后在此块之后移动该行....就像这样

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

步骤6:配置PHP以激活SSL

编辑你的php.ini(使用wampmanager菜单,以便编辑正确的菜单)

删除评论&#39;;&#39;从这一行

extension=php_openssl.dll

步骤7:配置安全网站虚拟主机

对于你所有虚拟主机的人而言,现在你无法避免这个过程。

修改\wamp\bin\apache\apachex.y.z\conf\extra\httpd-ssl.conf

此文件由Apache发布,包含一些默认文件位置。 我们可以保留这个文件的大部分内容,但是我们需要在这里配置虚拟主机以匹配我们的实际站点位置和其他一些内容:

找到这些行

DocumentRoot "c:/Apache2/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog "c:/Apache2/logs/error.log"
TransferLog "c:/Apache2/logs/access.log"

并将其更改为

DocumentRoot "c:/wamp/www/wamphelpers"
ServerName wamphelpers.dev:443
ErrorLog "c:/wamp/logs/ssl_error.log"
TransferLog "c:/wamp/logs/ssl_access.log"

查找

SSLCertificateFile "c:/Apache2/conf/server.crt"

并改为

SSLCertificateFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.crt/server.crt"

查找

SSLCertificateKeyFile "c:/Apache2/conf/server.key"

并改为

SSLCertificateKeyFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.key/server.key"

查找

<Directory "c:/Apache2/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

并改为

Apache 2.2语法

<Directory "c:/wamp/www/wamphelpers">
    SSLOptions +StdEnvVars
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1 localhost ::1
</Directory>

Apache 2.4语法

<Directory "c:/wamp/www/wamphelpers">
    SSLOptions +StdEnvVars
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require local
</Directory>

查找

SSLSessionCache        "shmcb:c:/Apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

并将其更改为

SSLSessionCache        "shmcb:c:/wamp/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

查找

CustomLog "c:/Apache24/logs/ssl_request.log" \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

并改为

CustomLog "c:/wamp/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

基本上查看conf文件和任何未注释掉的命令,但是引用了文件或文件夹 应该更改为引用WAMPServer文件夹结构而不是&#39; C:/ Apache2 ....&#39;

现在确保我们保存的所有这些文件都已保存,并使用wampmanager菜单重新启动Apache。

首先测试未受保护的网站是否仍在运行。

然后通过添加&#39; https://&#39;来尝试使用新的受保护网站。到域名的前面 即https://www.wamphelpers.dev当然没有单引号。

如果Apache没有重启,你可能拼错了。像这样测试配置: -

打开命令窗口

cd \wamp\bin\apache\apachex.y.z\bin
httpd -t

这将解析所有配置文件,并且应该为您提供文件名和找到错误的行号。

修复它,然后重试。

首次访问您的网站会生成一个类似这样的消息页面。 这是使用FireFox,其他人会略有不同,但概念却一样。

enter image description here

这是因为您的证书未由受信任的机构DONT PANIC签署,这应该会发生。

点击,&#39;我了解风险&#39;这会显示一个按钮,说“添加例外”#39; 在检查证书站点详细信息实际上是您的后,按添加例外按钮, 除非你清除例外列表,否则你不会再看到这条消息。

BIG NOTE 从Apache v2.2.12和OpenSSL v0.9.8j开始,现在可以为每个Apache实例保护多个站点。 本教程不涉及该过程。 有关详细信息,请参见此处:

Here

and Here

and Here

就像我在顶部说的那样,现在你需要对SSL配置中的所有可用选项进行一些研究,并根据需要使事情工作,而不是使用默认值。

答案 1 :(得分:5)

必须在文件 httpd.conf 中激活模块 LoadModule socache_shmcb_module modules / mod_socache_shmcb.so 在wampserver 2.5中。如果没有apache抛出下一条消息:

AH00526:C:/wamp/bin/apache/apache2.4.9/conf/extra/httpd-ssl.conf的第75行语法错误: SSLSessionCache:&#39; shmcb&#39;不支持会话缓存(已知名称:)。也许你需要加载适当的socache模块(mod_socache_shmcb?)。

答案 2 :(得分:2)

@RiggsFolly: 教程中的一些小错误/拼写错误/添加内容。以下内容与Windows 7 SP1 64位上的WAMPServer 2.5 64位(Apache 2.4.9和PHP 5.5.12)结合使用:

-httpd-vhosts.conf位于extra / httpd-vhosts.conf

- 当您尝试编辑主机文件时,请务必禁用任何病毒扫描程序。其中一些阻止访问主机文件。

- 确保在编辑主机文件时以管理员身份打开texteditor,否则在尝试保存时会出错。

- 不要忘记在主机行的开头删除#,如果有的话

- 如果您使用WAMPServer 64bit,请务必下载64位版本的OpenSSL

- 步骤openssl genrsa -out website \ server.key 2048  创建一个server.key文件,而不是privkey.pem!

-file \ wamp \ bin \ apache \ apachex.yz \ conf \ httpd-ssl.conf位于\ wamp \ bin \ apache \ apachex.yz \ conf \ extra \ httpd-ssl.conf(也许这取决于在WAMPServer版本上)

- 我必须使用http(80-> 8080)和https(443-> 444)的不同端口作为我认为Skype使用的这些端口。当您使用不同的端口时,请务必在本教程中看到80或443的任何地方使用这些端口

- 我还必须启用socache_shmcb_module。 “httpd -t”也提到了这一点。

答案 3 :(得分:2)

如果你有这样的错误:

  

无法将modules / mod_ssl.so加载到服务器:指定的模块可以   找不到。

  1. 您可能想尝试在wamp文件夹中搜索libeay32.dll,您可能会在{wamp folder} / bin / php / php {version 7} /

  2. 中找到它
  3. 复制libeay32.dll和ssleay32.dll并将其粘贴到{wamp folder} / bin / apache / apache {version 2.x} / bin / AND {wamp folder} / bin / php / php {verion 5.x的}。请务必备份您要放置的任何内容。

  4. 运行httpd -t并测试语法

  5. 注意:我认为这是因为wap 3.0.6的apache openssl部分中的错误。幸运的是在php7文件夹中这些dll与apache和php5兼容。

答案 4 :(得分:1)

@RiggsFolly :可以轻松生成带密钥的自签名证书,例如此处... http://www.selfsignedcertificate.com/,所以我可以从第4步开始教程(我也有标准: 80虚拟服务器正在运行。

无论如何,在默认的WAMP安装中已经启用了一些提到的东西(我猜它会从版本变为版本),但其余的帮助了我很多。实际上有一件事情遗失了......我还必须取消注释&#34; httpd.conf&#34;

中的以下一行
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

答案 5 :(得分:1)

如果您有错误:

  

无法将modules / mod_ssl.so加载到服务器:操作系统   无法运行%1

然后你必须:

  1. 在此处安装Win32 OpenSSL http://slproweb.com/products/Win32OpenSSL.html
  2. 将libeay32.dll,ssleay32.dll复制/粘贴到您的wamp php bin文件夹中(C:\ wamp64 \ bin \ php \ php5.6.19)
  3. 重启apache
  4. 注意:在Wamp服务器3上测试

答案 6 :(得分:1)

毕竟:

1).Shutdown WAMP并继续C:\wamp\scripts\config.inc.php从阵列libeay32.dllssleay32.dll,第133,139行

移动

2)。从官方网站安装OpenSSL,注意你的OS x64的版本。

命令提示符:

3)。cd C:\wamp\bin\apache\apache2.4.23\bin

4)。 openssl req -new > localhost.csr

5)。 openssl rsa -in privkey.pem -out localhost.key

6)。 openssl x509 -in localhost.csr -out localhost.crt -req -signkey localhost.key -days 365 -sha256 -extfile v3.ext

来自Chrome 58的

更新,我们需要提供Subject Alternative Name。 我们可以从扩展文件v3.ext获取此名称:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = 127.0.0.1
DNS.2 = localhost

在Common Name中插入'localhost'

非常重要

7)。获取localhost.key和localhost.crt并将它们放到C:\wamp\bin\apache\apache2.4.23\conf\key(确保在创建适当的目录之前)

配置:

8)。启用C:\wamp\bin\apache\apache2.4.23\bin\php.ini

C:\wamp\bin\php\php5.6.25\php.ini extension=php_openssl.dll

9)。升级到C:\wamp\bin\apache\apache2.4.23\conf\httpd.conf并取消注释:

LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf

Include conf/extra/httpd-vhosts.conf

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 

10)。继续C:\wamp\bin\apache\apache2.4.23\conf\extra\httpd-ssl.conf

并进行更改:

SSLSessionCache "shmcb:c:/wamp/bin/apache/apache2.4.23/logs/ssl_scache(512000)"

SSLSessionCacheTimeout 300

VirtualHost _default_:443

DocumentRoot "c:/wamp/www/"

ServerName localhost:443

ErrorLog "c:/wamp/bin/apache/apache2.4.23/logs/ssl_error.log"

,(创建文件,如果不存在)

TransferLog "c:/wamp/bin/apache/apache2.4.23/logs/access.log"

SSLCertificateFile "c:/wamp/bin/apache/apache2.4.23/conf/key/localhost.crt"

SSLCertificateKeyFile "c:/wamp/bin/apache/apache2.4.23/conf/key/localhost.key"

<Directory "c:/wamp/www/">
    SSLOptions +StdEnvVars
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require local
</Directory>

  CustomLog "c:/wamp/bin/apache/apache2.4.23/logs/ssl_request.log"

证书处理:

11)。按Win + R并插入'certmgr.msc',将servercert.crt导入'受信任的根证书颁发机构'

12)。在命令提示符下检查服务器'httpd -t'应为'语法正常'

13)。启动Wamp并继续链接https://localhost

我希望这会有所帮助

注意:请阅读有关Mozilla行为的文章:

https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/