在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。 毕竟这是一个工具包,经常变化。 最好保持这些东西独立,而不是使他们系统全球化。
一旦安装(安装时指定的文件夹),您就可以开始生成密钥和证书的过程了!
生成密钥和证书。
第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
作为我的ServerName
是ServerName 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
那么你必须:
- 在这里安装Win32 OpenSSL http://slproweb.com/products/Win32OpenSSL.html
- 复制/粘贴libeay32.dll,ssleay32.dll到您的wamp php bin文件夹(C:\ wamp64 \ bin \ php \ php5.6.19)
- 重新启动Apache
注意:在Wamp服务器上testing3
如果你有这样的错误:
Cannot load modules/mod_ssl.so into server: The specified module could not be found.
-
你可能想尝试在你的wamp文件夹中searchlibeay32.dll,你可能在{wamp folder} / bin / php / php {version 7} /
-
复制libeay32.dll和ssleay32.dll并将其粘贴到{wamp文件夹} / bin / apache / apache {version 2.x} / bin /和{wamp文件夹} / bin / php / php {verion 5.x}。 请确保您备份您正在放置的任何东西。
-
运行httpd -t并testing语法
注意:我相信这是由于apache openssl部分中的错误wamp 3.0.6。 幸运的是,在php7文件夹中,这些dll与apache和php5兼容。
毕竟:
1)。closuresWAMP并进入C:\wamp\scripts\config.inc.php
从数组libeay32.dll
, ssleay32.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/