you*_*mom 4 apache-http-server ssl wamp
我正在尝试在我的网站上启用 ssl 我使用 wamp 作为一个实时站点,我已经阅读了很多关于如何启用 SSL 的教程,但无法找到任何使用来自 startssl.com 的证书的教程
我认为需要启用的每个模块都已启用,目前我什至有
Include conf/extra/httpd-ssl.conf
Run Code Online (Sandbox Code Playgroud)
un 在我的 httpd.conf 中进行了评论,但是为了我的网站运行,在我的 httpd-ssl.conf 中评论了每一行。
我已经在我的 httpd-ssl 中单独浏览了每一行,并逐行注释了行 1 by 1 检查,在我取消注释虚拟主机行之前,我似乎没有任何问题(是的,我每次都这样做了,保存并重新启动了我的服务器)
我不知道这里发生了什么,我有从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>
Run Code Online (Sandbox Code Playgroud)
我还要注意:我运行 apache 2.4.4 并且我已经使用从http://slproweb.com/products/Win32OpenSSL.html下载的 openSSL 覆盖了 apache 中的文件(因为我在某处读过,大声笑)
另外我的网站实际上是我电脑上的一个实时网站,我确实打开了端口 80,而端口 443 的设置与 80 相同,原因是 canyouseeme.org 看不到端口 443 =/
如何配置 WAMPServer 以使用 HTTPS 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>
Run Code Online (Sandbox Code Playgroud)
将其名称添加到 C:\windows\system32\drivers\etc\hosts
127.0.0.1 wamphelpers.dev www.wamphelpers.dev
::1 wamphelpers.dev www.wamphelpers.dev
Run Code Online (Sandbox Code Playgroud)
现在从使用“以管理员身份运行”启动的命令窗口重新启动 dnscache
net stop dnscache
net start dnscache
Run Code Online (Sandbox Code Playgroud)
然后在\wamp\www\wamphelpers\index.php 中创建了一个简单的脚本
<?php
echo 'Hello, this is the WAMPHELPERS.DEV site homepage';
?>
Run Code Online (Sandbox Code Playgroud)
现在重新启动 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] 将目录更改为上面安装 OpenSSL 工具包的位置,打开命令窗口(Dos 框)。就我而言,这是
CD c:\apps\OpenSSL-Win32\bin
Run Code Online (Sandbox Code Playgroud)
为要放入的输出创建一个文件夹(以保持 bin 文件夹整洁)我使用了网站
md website
Run Code Online (Sandbox Code Playgroud)
现在输入这个命令:
openssl genrsa -out website\server.key 2048
Run Code Online (Sandbox Code Playgroud)
这应该在网站文件夹中创建了一个名为 privkey.pem 的文件,没有密码短语密钥,检查它是否存在。
第 2 步:生成 CSR(证书签名请求)
在 CSR 生成过程中,系统会提示您输入几条信息。这些是证书的 X.509 属性。提示之一是“通用名称(例如服务器 FQDN 或您的名称)[]:”。
请务必在此字段中填写要受 SSL 保护的服务器的完全限定域名。
因此,如果要保护的网站是https://www.wamphelpers.dev
,则www.wampheplers.dev
在此提示下输入。
不要在问题中输入任何内容:质询密码 []: ] 只需按 Enter。如果您在配置 SSL 的情况下启动 Apache 时确实在此处输入密码短语,则 Apache 将无法启动,并会显示以下错误消息:-
[错误] 初始化: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 []: 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 )
Run Code Online (Sandbox Code Playgroud)
第 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
Run Code Online (Sandbox Code Playgroud)
步骤 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
Run Code Online (Sandbox Code Playgroud)
并将我们刚刚生成的文件复制到其中,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
第 5 步:配置 Apache 以激活 SSL
编辑 httpd.conf,检查该行是否取消注释
LoadModule ssl_module modules/mod_ssl.so
Run Code Online (Sandbox Code Playgroud)
也从这一行中删除注释“#”
Include conf/extra/httpd-ssl.conf
Run Code Online (Sandbox Code Playgroud)
然后在这个块之后移动那条线......就像这样
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
Run Code Online (Sandbox Code Playgroud)
第六步:配置PHP激活SSL
编辑您的 php.ini (使用 wampmanager 菜单,以便您编辑正确的菜单)
删除注释“;” 从这一行
extension=php_openssl.dll
Run Code Online (Sandbox Code Playgroud)
第 7 步:配置您的安全站点虚拟主机
是的,对于所有不支持虚拟主机的人来说,现在您无法避免这个过程。
编辑 \wamp\bin\apache\apachex.y.z\conf\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"
Run Code Online (Sandbox Code Playgroud)
并将它们更改为
DocumentRoot "c:/wamp/www/wamphelpers"
ServerName wamphelpers.dev:443
ErrorLog "c:/wamp/logs/ssl_error.log"
TransferLog "c:/wamp/logs/ssl_access.log"
Run Code Online (Sandbox Code Playgroud)
找
SSLCertificateFile "c:/Apache2/conf/server.crt"
Run Code Online (Sandbox Code Playgroud)
并更改为
SSLCertificateFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.crt/server.crt"
Run Code Online (Sandbox Code Playgroud)
找
SSLCertificateKeyFile "c:/Apache2/conf/server.key"
Run Code Online (Sandbox Code Playgroud)
并更改为
SSLCertificateKeyFile "c:/wamp/bin/apache/apache2.2.26/conf/ssl.key/server.key"
Run Code Online (Sandbox Code Playgroud)
找
<Directory "c:/Apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
Run Code Online (Sandbox Code Playgroud)
并更改为
<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>
Run Code Online (Sandbox Code Playgroud)
找
SSLSessionCache "shmcb:c:/Apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
Run Code Online (Sandbox Code Playgroud)
并将其更改为
SSLSessionCache "shmcb:c:/wamp/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
Run Code Online (Sandbox Code Playgroud)
找
CustomLog "c:/Apache24/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Run Code Online (Sandbox Code Playgroud)
并更改为
CustomLog "c:/wamp/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Run Code Online (Sandbox Code Playgroud)
基本上查看 conf 文件,任何未注释掉但引用文件或文件夹的命令都应更改为引用 WAMPServer 文件夹结构,而不是“C:/Apache2....”
现在确保我们更改的所有这些文件都已保存,并使用 wampmanager 菜单重新启动 Apache。
首先测试未受保护的站点是否仍在工作。
然后尝试通过在域名前面添加“https://”来尝试使用新的受保护站点,即https://www.wamphelpers.dev
当然没有单引号。
如果 Apache 没有重新启动,您可能拼写错误。像这样测试配置:-
打开命令窗口
cd \wamp\bin\apache\apachex.y.z\bin
httpd -t
Run Code Online (Sandbox Code Playgroud)
这将解析所有配置文件,并应该为您提供文件名和发现错误的行号。
修复它并重试。
第一次访问您的站点将生成一个类似这样的消息页面。这是使用FireFox,其他的会略有不同,但概念是一样的。
这是因为您的证书不是由受信任的机构签署的,DONT PANIC,这是应该发生的。
单击“我了解风险”,这将显示一个按钮,上面写着“添加例外”。在检查证书站点详细信息实际上是您的信息后,按“添加例外”按钮,除非您清除,否则您将不会再次看到此消息例外清单。
重要提示 从 Apache v2.2.12 和 OpenSSL v0.9.8j 开始,现在可以为每个 Apache 实例保护多个站点。本教程不涉及该过程。请参阅此处了解更多详情:
就像我在顶部所说的那样,现在您需要对 SSL 配置中的所有可用选项进行一些研究,并使事情按您的意愿工作,而不是使用默认值。
归档时间: |
|
查看次数: |
15535 次 |
最近记录: |