我在 Raspian(Raspberry Pi)服务器上运行 Apache 2.4.25。
我想为服务器设置 SSL 证书,因此我运行了以下命令来获取certbot
:
sudo apt-get update
sudo apt-get install python-certbot-apache
然后我certbot
像这样跑:
sudo certbot certonly --standalone -d marksfam.com -d www.marksfam.com
这告诉我它已将我的证书放入文件夹/etc/letsencrypt/live/marksfam.com
。我检查并确认它已在其中创建了文件fullchain.pem
和privkey.pem
,以及cert.pem
、chain.pem
和。可能值得注意的是(但我不这么认为) - 我只能在正常帐户无法查看的README
情况下查看此文件夹。sudo
不管怎样,我将其符号链接mods-available/ssl.load
到了 apache 的mods-enabled
目录sites-available/default-ssl.conf
和sites-enabled
。
我里面default-ssl.conf
有这个:
<IfModule mod_ssl.c>
<VirtualHost marksfam.com:443>
ServerName www.marksfam.com
ServerAdmin webmaster@local
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/marksfam.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/marksfam.com/privkey.pem
</VirtualHost>
</IfModule>
然后我用 重新启动服务器sudo service apache2 restart
。
访问http://marksfam.com运行良好。访问https://marksfam.com不行。在 Firefox 中,我收到以下消息:
连接到 www.marksfam.com 时发生错误。SSL 收到的记录超出了允许的最大长度。错误代码:SSL_ERROR_RX_RECORD_TOO_LONG
在 Chrome 中,我收到以下消息:
此站点无法提供安全连接 www.marksfam.com 发送了无效响应。请尝试运行 Windows 网络诊断。ERR_SSL_PROTOCOL_ERROR
Chrome 和 Firefox 都没有在其检查器的控制台选项卡下告诉我任何信息...没有任何消息提示我更多有关我做错的事情。
如果我检查 apache 的 error.log 文件,我看到的只是:
[mpm_event:notice] AH00491: caught SIGTERM, shutting down
[ssl:warn] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[mpm_event:notice] AH00489: Apache/2.4.25 (Raspian) OpenSSL/1.0.21 mod_wsgi/4.5.11 Python/2.7 confiured -- resuming normal operations
[core:notice] AH00094: Command line: '/usr/sbin/apache2'
知道我做错了什么吗?似乎没有给出有用的错误消息。端口 80 和 443 都转发到已启动并运行的服务器,如果您想尝试自己在 marksfam.com 上访问它们。无论我尝试访问https://marksfam.com或者https://www.marksfam.com或者https://192.168.0.2(当我与它位于同一本地网络上时,它是本地地址。)
如果我分享的还不够多,我很乐意分享更多的日志或配置细节。
答案1
您的服务器中有些配置不正确,我认为这不在您显示的部分服务器配置中。尝试访问您的服务器显示它正在端口 443 上接受纯 HTTP 请求,即它应该只期望 TLS 流量的端口。因此,我认为您在端口 443 上有一些其他 VirtualHost 或一些默认配置,这些配置未启用 SSL 或未配置证书。但您不能在同一个 IP 和端口上混合使用纯 HTTP 和 HTTPS。
也可以看看Debian 服务器 SSL 证书配置返回 err_ssl_protocol_error可能存在类似的问题。