我正在尝试在我的网站上启用 SSL,我使用 wamp 作为实时网站,我阅读了很多关于如何启用 SSL 的教程,但无法找到任何使用 startssl.com 证书的教程
我认为每个需要启用的模块都已启用,我目前甚至有
Include conf/extra/httpd-ssl.conf
在我的 httpd.conf 中取消注释,但是为了我的网站运行,我已经注释了 httpd-ssl.conf 中的每一行。
我已经逐行检查了我的 httpd-ssl 中的每一行,并逐行检查了注释行,似乎没有任何问题,直到我取消注释虚拟主机行(是的,我每次都这样做,保存并重新启动我的服务器)
我不知道这里发生了什么,我有从 startssl 保存的 4 个文件,crt 是我的网站的...所以我希望这里有人可以帮忙。下面是我的 httpd-ssl.conf
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog builtin
SLSessionCache "dbm:Z:/wamp/logs/ssl_scache"
SSLSessionCache "shmcb:Z:/wamp/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:Z:/wamp/bin/apache/Apache2.2.11/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLMutex default
NameVirtualHost *:443
<VirtualHost *:443>
ServerName "dirtrif.com"
DocumentRoot "Z:/wamp/www/"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCACertificatePath "Z:/wamp/OpenSSL/certs/"
SSLCACertificateFile "Z:/wamp/OpenSSL/certs/public.crt"
SSLCACertificateFile "Z:/wamp/OpenSSL/certs/ca.pem"
SSLCertificateKeyFile "Z:/wamp/OpenSSL/certs/ssl.key"
SSLCertificateChainFile "Z:/wamp/OpenSSL/certs/sub.class1.server.ca.pem"
</VirtualHost>
我还想说明一下:我运行的是 apache 2.4.4,并且已经用从以下网址下载的 openSSL 覆盖了 apache 中的文件http://slproweb.com/products/Win32OpenSSL.html(因为我在某处读到过这样做,哈哈)
另外我的网站实际上是我电脑上的实时网站,我确实打开了端口 80,而端口 443 与 80 的设置相同,请问为什么 canyouseeme.org 没有看到端口 443 =/
答案1
如何配置 WAMPServer 以使用 HTTPS SSL
*这不是一个简单的过程。希望本教程能帮助您让 SSL 正常工作。但是,一旦 SSL 正常工作,如何正确配置则完全取决于您。
好的,
我根据一个名为 www.wamphelpers.dev 的网站的创建情况制作了本教程,因此,无论您在哪里看到该名称,请将其更改为您要保护的网站名称。
我首先在 \wamp\www\wamphelpers 中创建了一个不安全的网站
在 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
127.0.0.1 wamphelpers.dev www.wamphelpers.dev
::1 wamphelpers.dev www.wamphelpers.dev
现在,使用“以管理员身份运行”启动的命令窗口,按如下方式重新启动 dnscache
net stop dnscache
net start dnscache
然后在 \wamp\www\wamphelpers\index.php 中创建一个简单的脚本
<?php
echo 'Hello, this is the WAMPHELPERS.DEV site homepage';
?>
现在重新启动 Apache,并确保你的简单不安全网站正常运行before continuing
openssl 工具包。 openssl.exe、ssleay32.dll 和 libeay32.dll 随附并位于 C:\wamp\bin\apache\apachex.yz\bin 文件夹中。这应该是您创建自签名证书所需的全部内容!
然而:在我安装的任何 Apache 版本上,这些都不起作用。我总是收到此错误消息。
序数会根据我所在的 apache 版本文件夹而变化。
如果您收到此错误,请不要担心,这是您需要做的。
安装最新版本的 OPENSSL TOOLKIT
这可以得到从这里
选择最新版本的“Win32 OpenSSLv xxx Light”,因为这是您所需要的。
这将下载一个.exe文件,您可以运行该文件来安装此工具包。
它会问以下问题,我建议您这样回答,这样您就不会最终将某些东西安装到 C:\windows\system32 中。毕竟这是一个工具包,而且它经常会发生变化。最好将这些东西分开,不要让它们成为系统全局的。
一旦安装完毕(安装到您在安装中指定的任何文件夹),您就可以开始生成密钥和证书的过程了!
生成密钥和证书。
步骤 1:生成 RSA 私钥
首先,我们需要自己创建一个证书。正常的(付费)流程是创建证书,然后将其传递给签名机构。这就是为什么它需要花钱,因为他们必须尽职尽责,检查您是否是您所说的那个人,以及您将使用该证书的网站是否真实合法。
openssl 工具包用于生成用于我们证书的 RSA 私钥和 CSR(证书签名请求)。第一步是创建您的 RSA 私钥。此密钥是一个 1024 位 RSA 密钥,使用 Triple-DES 加密并以 PEM 格式存储,以便可以读取为 ASCII 文本。
使用 [b]以管理员身份运行[/b] 打开命令窗口(Dos 框),将目录更改为您安装上述 OpenSSL 工具包的位置。在我的例子中,这是
CD c:\apps\OpenSSL-Win32\bin
为输出创建一个文件夹(以保持 bin 文件夹整洁)我使用了网站
md website
现在输入此命令:
openssl genrsa -out website\server.key 2048
这应该在网站文件夹中创建一个名为 privkey.pem 的文件,没有密码密钥,请检查它是否存在。
第 2 步:生成 CSR(证书签名请求)
在生成 CSR 期间,系统会提示您输入几条信息。这些是证书的 X.509 属性。其中一条提示是“通用名称(例如服务器 FQDN 或您的名称)[]:”。
重要的是,此字段必须填写要受 SSL 保护的服务器的完全限定域名。
因此,如果要保护的网站是,则在此提示符下https://www.wamphelpers.dev
输入。www.wampheplers.dev
请勿在问题中输入任何内容:挑战密码[]:] 只需按 Enter 键。如果您在启动配置了 SSL 的 Apache 时在此处输入密码,Apache 将无法启动并显示以下错误消息:-
[错误] 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) []: www.wamphelpers.dev
Email Address []: [email protected]
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/[email protected]
Getting Private key
步骤4:安装私钥和证书
在您使用的 Apache 版本下创建这 2 个目录。
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 ssl_module modules/mod_ssl.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:配置 PHP 以激活 SSL
编辑您的 php.ini (使用 wampmanager 菜单以便编辑正确的菜单)
从此行删除注释“;”
extension=php_openssl.dll
步骤 7:配置您的安全站点虚拟主机
是的,对于所有虚拟主机反对者来说,现在你无法避免这个过程。
编辑\wamp\bin\apache\apachex.y.z\conf\httpd-ssl.conf
此文件由 Apache 发布,包含一些默认文件位置。我们可以保留此文件的大部分内容,但我们需要在此处配置虚拟主机以匹配我们实际的站点位置和其他一些内容,因此:
找到这些行
DocumentRoot "c:/Apache2/htdocs"
ServerName www.example.com:443
ServerAdmin [email protected]
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/apache2.2.26/conf/ssl.key/server.key"
寻找
<Directory "c:/Apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
并更改为
<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>
寻找
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。
首先测试未受保护的站点是否仍然正常运行。
然后尝试使用新的受保护站点,通过在域名前面添加“https://”,即https://www.wamphelpers.dev
当然不带单引号。
如果 Apache 没有重新启动你可能拼写错误了。请像这样测试配置:-
打开命令窗口
cd \wamp\bin\apache\apachex.y.z\bin
httpd -t
这将解析所有配置文件,并为您提供发现错误的文件名和行号。
修复它并重试。
首次访问您的网站将生成类似这样的消息页面。这是使用 FireFox 的,其他版本略有不同,但概念相同。
这是因为您的证书不是由受信任的机构签名的,请不要惊慌,这是正常现象。
单击“我了解风险”,将会显示一个按钮“添加例外”,检查证书站点详细信息确实属于您后,按“添加例外”按钮,除非您清除例外列表,否则您将不会再看到此消息。
重要提示 从 Apache v2.2.12 和 OpenSSL v0.9.8j 开始,每个 Apache 实例可以保护多个站点。本教程不介绍该过程。有关更多详细信息,请参见此处:
就像我在上面说的那样,现在您需要对 SSL 配置中可用的所有选项进行一些研究,并使其按照您希望的方式工作,而不是使用默认设置。