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

我试图在本地主机上设置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> 

什么问题不能得到….

如何configurationWAMPServer以使用HTTPS SSL

*这不是一个微不足道的过程。 本教程希望能够为您的SSL工作。 但是,一旦它正常工作,就可以正确configuration它。

所有谁在这条路上旅行的额外阅读

好,

我已经基于这个教程创build一个名为www.wamphelpers.dev的网站所以,无论你看到这个名字改变它的网站名称,你正试图保护。

我开始创build一个不安全的网站,在\ 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文件,因此您可能需要禁用病毒检查程序,或将其configuration为不临时阻止hosts文件

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

现在,按照如下所示从使用“以pipe理员身份运行”启动的命令窗口重新启动dnscache

 net stop dnscache net start dnscache 

然后在\ wamp \ www \ wamphelpers \ index.php中创build一个简单的脚本

 <?php echo 'Hello, this is the WAMPHELPERS.DEV site homepage'; ?> 

现在激活你定义的新的虚拟主机,编辑\wamp\bin\apache\apache{version}\conf\httpd.conf并find这一行

 # 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.yz \ bin文件夹这应该是所有您需要创build您的自签名证书!

但是,这些在我安装的任何Apache版本上都不适用。 我总是得到这个错误信息。

错误信息

顺序号根据我所在的apache版本文件夹而改变。

如果你得到这个错误,不要担心这是你需要做的。

安装最新版本的OPENSSL TOOLKIT

这可以从这里获得

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

select最新版本的“Win32 OpenSSLv xxx Light”或“Win64 OpenSSLv xxx Light”以匹配您安装的WAMPServer版本,因为这是您所需要的。

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

它会问以下问题,我build议你这样回答,所以你不会最终安装到C:\ WINDOWS \ SYSTEM32。 毕竟这是一个工具包,经常变化。 最好保持这些东西独立,而不是使他们系统全球化。

openssl安装建议

一旦安装(安装时指定的文件夹),您就可以开始生成密钥和证书的过程了!


生成密钥和证书。

第1步:生成一个RSA私钥

首先,我们需要创build一个证书。 正常(付费)过程是创build您的证书,然后将其传递给签名机构。 这就是为什么它需要花钱,因为他们必须这样做,以检查自己是谁,你将使用该证书的网站是真实合法的。

openssl工具包用于生成用于证书的RSA私钥和CSR(证书签名请求)。 第一步是创build您的RSA私钥。 该密钥是一个1024位RSA密钥,使用Triple-DES进行encryption,并以PEM格式存储,以便可读取为ASCII文本。

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

 CD c:\apps\OpenSSL-Win32\bin 

为输出做一个文件夹(保持bin文件夹整洁)我用网站

 md website 

现在input这个命令:

 openssl genrsa -out website\server.key 2048 

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

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

在生成CSR的过程中,系统会提示您input多条信息。 这些是证书的X.509属性。 其中一个提示是“Common Name(例如服务器FQDN或你的名字)[]:”。 使用SSL保护的服务器的完全限定的域名填写此字段非常重要。 因此,如果要保护的网站是https://www.wamphelpers.dev ,则在此提示下inputwww.wampheplers.dev 。 我用wamphelper.dev作为我的ServerNameServerName wamphelpers.dev

不要input任何问题: 一个质询密码[]: ]只需按Enter键。 如果你在这里input一个密码,当你用Apache来启动Apache时,Apache将不会启动,并会给出这个错误信息:

[错误]初始化:Win32不支持SSLPassPhraseDialog内build

基本上,如果你input一个密码短语,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 (eg 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签署证书时testing新的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版本下创build这两个目录。

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

然后将刚才生成的文件复制到它们中,如下所示:

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

第5步:configurationApache以激活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 

从这一行删除注释“#”也

 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步:configurationPHP来激活SSL

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

删除评论“;” 从这一行

 extension=php_openssl.dll 

第7步:configuration您的安全站点虚拟主机

是所有你的虚拟主机不能说话者,现在你无法避免的过程。

编辑\wamp\bin\apache\apachex.yz\conf\extra\httpd-ssl.conf

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

find这些线

 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.yx/conf/ssl.crt/server.crt" 

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

并改为

 SSLCertificateKeyFile "c:/wamp/bin/apache/apachex.yx/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文件夹结构,而不是“C:/ Apache2 ….”

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

首先testing一下没有保护的网站是否还在工作。

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

如果Apache不重启,你可能拼写错了。 像这样testingconfiguration:

打开一个命令窗口

 cd \wamp\bin\apache\apachex.yz\bin httpd -t 

这将parsing所有的configuration文件,并应给你一个文件名和一个行号find一个错误。

修复它,然后再试一次。

首先访问您的网站会产生一个类似这样的消息页面。 这是使用FireFox,别人会略有不同,但它的概念是一样的。

在这里输入图像描述

这是因为您的证书不是由可信任的机构签署的,不要紧急,这是应该发生的。

点击“我了解风险”,然后会显示一个button,显示“添加例外”按下“添加例外”button,检查证书站点详细信息实际上是您的,除非您清除,否则不会再看到此消息例外列表。

大注意从Apache v2.2.12和OpenSSL v0.9.8j开始,现在可以为每个Apache实例保护多个站点。 本教程不包含该过程。 在这里看到更多的细节:

这里

和这里

和这里

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

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

AH00526:C:/wamp/bin/apache/apache2.4.9/conf/extra/httpd-ssl.conf中第75行的语法错误:不支持SSLSessionCache:'shmcb'会话caching(已知名称:)。 也许你需要加载相应的socache模块(mod_socache_shmcb?)。

@RiggsFolly:你的教程中的一些小错误/错别字/补充。 以下是与Windows 7 SP1 64位上的WAMPServer 2.5 64位(Apache 2.4.9和PHP 5.5.12)结合使用:

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

当你试图编辑你的主机文件时,一定要禁用任何virusscanner。 其中一些阻止访问主机文件。

– 确保在编辑主机文件时以pipe理员身份打开文本编辑器,否则尝试保存时会出错。

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

如果你使用WAMPServer 64bit,一定要下载64位版本的OpenSSL

– 步骤openssl genrsa -out网站\ server.key 2048创build一个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”也提到了这个。

@RiggsFolly :使用key的自签名证书可以很容易地生成,例如这里… http://www.selfsignedcertificate.com/ ,所以我可以从第4步开始教程(我也有标准:运行80个虚拟服务器) 。

无论如何,一些提到的东西已经启用了默认的WAMP安装(我想它从版本到版本),但其他人帮助了我很多。 实际上有一件事情是不存在的……我还必须在“httpd.conf”中取消注释以下行:

 LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 

如果你有错误:

无法将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

注意:在Wamp服务器上testing3

如果你有这样的错误:

 Cannot load modules/mod_ssl.so into server: The specified module could not be found. 
  1. 你可能想尝试在你的wamp文件夹中searchlibeay32.dll,你可能在{wamp folder} / bin / php / php {version 7} /

  2. 复制libeay32.dll和ssleay32.dll并将其粘贴到{wamp文件夹} / bin / apache / apache {version 2.x} / bin /和{wamp文件夹} / bin / php / php {verion 5.x}。 请确保您备份您正在放置的任何东西。

  3. 运行httpd -t并testing语法

注意:我相信这是由于apache openssl部分中的错误wamp 3.0.6。 幸运的是,在php7文件夹中,这些dll与apache和php5兼容。

毕竟:

1)。closuresWAMP并进入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 

在通用名称中插入“localhost”非常重要

抓取localhost.key和localhost.crt,并把它们放到C:\wamp\bin\apache\apache2.4.23\conf\key (当然,在创build合适的目录之前)

组态:

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" 

,(如果不存在则创build文件)

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'应该是'Syntax OK'

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

我希望这会有所帮助

注意:请阅读这篇关于Mozilla行为的文章:

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