<Directory "c:/wamp/www/">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
SSLOptions +StdEnvVars
</Directory>
我尝试了许多其他的东西,比如
<Directory "c:/wamp/www/">
SSLOptions +StdEnvVars
</Directory>
为什么无法获取问题是什么?
<Directory "c:/wamp/www/">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
SSLOptions +StdEnvVars
</Directory>
我尝试了许多其他的东西,比如
<Directory "c:/wamp/www/">
SSLOptions +StdEnvVars
</Directory>
为什么无法获取问题是什么?
如何配置WAMPServer使用HTTPS SSL
这不是一个简单的过程。本教程将帮助您使SSL正常工作,但一旦它正常工作,正确配置就完全取决于您。
好的,
我以创建一个名为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>
127.0.0.1 wamphelpers.dev www.wamphelpers.dev
::1 wamphelpers.dev www.wamphelpers.dev
现在,从使用“以管理员身份运行”启动的命令窗口中,按照以下方式重新启动dnscache
ipconfig /flushdns
然后在 \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
openssl工具包。 openssl.exe、ssleay32.dll和libeay32.dll包含在C:\wamp\bin\apache\apachex.y.z\bin文件夹中。 这应该是您创建自签名证书所需的全部内容!
然而:在我安装的任何Apache版本上,这些都不起作用。 我总是收到此错误消息。
当我在Apache版本文件夹中时,序号会改变。
如果你遇到了这个错误,不用担心,下面是需要做的事情。
安装最新版本的OPENSSL TOOLKIT
可以从这里获取。
注意:目前不要使用V1.1版本,PHP团队尚未使用这些新链接编译PHP,因此请继续使用V1.0.?版本。
选择与您安装的WAMPServer版本相匹配的最新版本的“Win32 OpenSSLv xxx Light”或“Win64 OpenSSLv xxx Light”,因为这是您所需的全部内容。
这将下载一个.exe文件,您可以运行它来安装这个工具包。
它会问以下问题,建议您按照以下方式回答,以免将某些东西安装到C:\windows\system32中。毕竟这是一个工具包,而且经常更改。最好将这些东西分开,并不使它们成为系统全局。
安装完成后(安装到您指定的任何文件夹),您就可以开始生成密钥和证书的过程了!
生成密钥和证书。
步骤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属性。
其中一个提示是“Common Name(例如服务器FQDN或YOUR name)[]:”。
重要的是,在此字段中填入受SSL保护的服务器的完全限定域名。
因此,如果要受保护的网站是https://www.wamphelpers.dev
,则在此提示处输入www.wampheplers.dev
。我使用wamphelper.dev
作为我的ServerName
是ServerName wamphelpers.dev
不要在问题“挑战密码[]:”中输入任何内容:]只需按Enter键即可。 如果您在此处输入密码短语,则在使用配置了SSL的Apache启动Apache时,Apache将无法启动,并显示以下错误消息:
[error] Init: SSLPassPhraseDialog builtin is not supported on Win32
基本上,如果您输入了密码短语,Apache 应该每次启动时都会要求您输入该密码短语。 显然,这不会使您的生活变得更轻松,但主要是在 Windows 上它实际上不起作用,并且当它尝试请求密码短语时会导致 Apache 崩溃,出现上述错误。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 )
步骤三:生成自签名证书
此时,您需要生成一个自签名证书,因为您要么不打算让您的证书由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
第四步:安装私钥和证书
在您使用的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
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
extension=php_openssl.dll
步骤七:配置您的安全站点虚拟主机
是的,对于所有不赞成使用虚拟主机的人来说,现在您无法避免这个过程。
编辑\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"
https://www.wamphelpers.dev
(当然不包括单引号)。
如果Apache无法重新启动,您可能拼写错误。可以这样测试配置:打开命令窗口。cd \wamp\bin\apache\apachex.y.z\bin
httpd -t
这是因为您的证书未经受信任机构签名,不要惊慌,这是正常现象。
点击“我了解风险”,然后会出现一个按钮,上面写着“添加例外”。 在确认证书网站详细信息属于您的情况下,点击添加例外按钮, 除非您清除了例外列表,否则您将不会再看到此消息。
重要提示 从Apache v2.2.12和OpenSSL v0.9.8j开始,现在可以在一个Apache实例中保护多个站点。 本教程不涵盖该过程。 请参见以下链接获取更多详细信息:
就像我在开头所说的那样,现在您需要对SSL配置中所有可用选项进行一些研究,并使其按照您的意愿工作,而不是使用默认设置。
http
和https
上加载我的开发网站时,我收到了错误消息refused to connect ERR_CONNECTION_REFUSED
。在Windows应用程序日志中,我看到了以下错误消息:The Apache service named reported the following error: >>> AH00526: Syntax error on line 73 of D:/wamp/bin/apache/apache2.4.9/conf/extra/httpd-ssl.conf
。第73行写着SSLSessionCache "shmcb:d:/wamp/logs/ssl_scache"
,通过取消注释http.conf
中的LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
,问题得以解决,这是从此答案中学到的。 - SteveAH00526: 在C:/wamp/bin/apache/apache2.4.9/conf/extra/httpd-ssl.conf的第75行语法错误: SSLSessionCache: 'shmcb'会话缓存不受支持(已知名称:)。也许您需要加载适当的socache模块(mod_socache_shmcb?)。
@RiggsFolly: 在您的教程中有一些小错误/拼写错误/补充。以下内容与WAMPServer 2.5 64位(Apache 2.4.9和PHP 5.5.12)在Windows 7 SP1 64位上配合使用:
-httpd-vhosts.conf位于extra / httpd-vhosts.conf中
-当您尝试编辑hosts文件时,请确保禁用任何病毒扫描程序。其中一些会阻止访问hosts文件。
-编辑hosts文件时,请务必以管理员身份打开文本编辑器,否则将无法保存并出现错误。
-不要忘记删除主机行开头的#(如果有的话)
-如果使用WAMPServer 64位,请确保下载64位版本的OpenSSL
-步骤openssl genrsa -out website \ server.key 2048 创建一个server.key文件而不是privkey.pem!
-文件\ wamp \ bin \ apache \ apachex.y.z \ conf \ httpd-ssl.conf位于\ wamp \ bin \ apache \ apachex.y.z \ conf \ extra \ httpd-ssl.conf(也许这取决于WAMPServer版本)
-我必须为http(80-&gt; 8080)和https(443-&gt; 444)使用不同的端口,因为我认为Skype使用了这些端口。当您使用不同的端口时,请确保在本教程中看到80或443的任何地方都使用这些端口
-我还必须启用socache_shmcb_module。 “httpd -t”也提到了这一点。
@RiggsFolly: 你可以在这里方便地生成自签名证书和密钥http://www.selfsignedcertificate.com/,所以我可以从第4步开始教程(我也运行了标准的:80虚拟服务器)。
无论如何,在默认的WAMP安装中,一些提到的内容已经启用(我猜它会根据版本而改变),但其余部分对我有很大帮助。实际上还有一件事情是缺失的...我还需要取消“httpd.conf”中以下行的注释。
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
那么你需要执行以下步骤:Cannot load modules/mod_ssl.so into server: The operating system cannot run %1
libeay32.dll
或ssleay32.dll
。 - user6247920首先:
1). 关闭WAMP,然后进入C:\wamp\scripts\config.inc.php
,从数组中移除libeay32.dll
和ssleay32.dll
,分别在第133行和第139行。
2). 从官方网站安装OpenSSL,注意你的操作系统版本是否为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”非常重要。
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"
https://localhost
我希望这能帮助到您。https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/