我一直在尝试让 SSL 工作,但遇到了问题。我尝试了这里和其他 Google 搜索结果中提供的几种解决方案,但都没有成功。
我获得了免费证书https://www.startssl.com/,我使用的是 Windows 服务器,客户端是 Firefox(代码 ssl_error_rx_record_too_long,其他浏览器提供的信息较少)。我尝试使用 Django,但请求从未到达服务器,所以我认为这无关紧要;控制台中没有显示任何内容。Apache 没有显示 httpd 的错误。
网站的 http(非 https)版本运行正常。在 https 请求中添加 :443 不会改变错误。
(我认为) httpd 配置的相关部分是:
Listen 80
LoadModule ssl_module modules/mod_ssl.so
DefaultType text/plain
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
Listen 443
NameVirtualHost 85.223.64.8:80
Include "C:/Users/Mark/Web/Apache/httpd.conf.incl"
<VirtualHost _default_:443>
# Include expanded
LogLevel warn
ErrorLog "path/secure.error.log"
DocumentRoot "path/www"
ServerName django.mverleg.nl
ServerAdmin [email protected]
ServerAlias *.django.mverleg.nl
ProxyPreserveHost On
ProxyRequests Off
SSLEngine on
SSLSessionCache 'shmcb:path/ssl_scache(512000)'
SSLSessionCacheTimeout 300
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile "path/ssl.crt"
SSLCertificateKeyFile "path/ssl.key"
SSLCertificateChainFile "path/sub.class1.server.ca.pem"
SSLCACertificateFile "path/ca.pem"
<Location />
UseCanonicalName Off
ServerSignature Off
AddDefaultCharset utf-8
ProxyPass http://127.0.0.1:8081/
</Location>
</VirtualHost>
运行 httpd 测试没有任何结果。重新启动时的错误日志:
The Apache2.2 service is restarting.
Starting the Apache2.2 service
The Apache2.2 service is running.
Init: Session Cache is not configured [hint: SSLSessionCache]
httpd.exe: Could not reliably determine the server's fully qualified domain name, using 85.223.64.8 for ServerName
[Wed Jan 04 01:39:58 2012] [notice] Digest: generating secret for digest authentication ...
[Wed Jan 04 01:39:58 2012] [notice] Digest: done
之后 htppd.exe不是正在运行(因此页面请求没有错误或响应)。
如果我注释掉VirtualHost部分,则上述内容的下一行是:
[Wed Jan 04 01:41:52 2012] [notice] Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.21 OpenSSL/0.9.8l configured -- resuming normal operations
任何帮助都将不胜感激。我以为一切都是根据我找到的各种指南设置的,所以我看不出哪里出了问题(我承认我不太了解 SSL 或 httpd 设置)。
更新版本已经实施了以下一些建议并显示错误。
难以置信,它又坏了……Http 站点可以正常工作,而 https 站点却说无法验证身份(我想这是向前迈出的一步)。然后我重启服务器,回到原来的样子(无法访问)。我恢复了更改(我想是的……),但它仍然坏了。这是否可能与缓存或存储密钥或类似的东西有关,因为当我添加新的 mod_ssl 时,它工作了一段时间?这些都没有任何意义,这让我抓狂……有什么想法吗?收到一个新错误:
[Wed Jan 04 03:30:45 2012] [crit] (OS 18)There are no more files. : master_main: create child process failed. Exiting.
答案1
目前该 IP 地址的 443 端口上显然未启用 SSL(http://85.223.64.8:443/
以纯 HTTP 方式工作)。
请仔细检查您是否已启用mod_ssl
(通过LoadModule
您的配置中的某处,取决于您正在使用的内容)。
如果您尚未指定NameVirtualHost
指令,请尝试使用<VirtualHost _default_:443>
而不是指定您的 IP 地址。
答案2
您的IfModule
这句话看起来不对。我认为应该是:
<IfModule mod_ssl.c>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
不是:
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
答案3
不确定,但ProxyPassReverse / http://127.0.0.1:8082/
可能会有帮助(文档位于http://httpd.apache.org/docs/2.1/mod/mod_proxy.html#proxypassreverse)。