我已经设法从LetsEncrypt下载了一个新的证书。我的VirtualHost配置设置为:
<VirtualHost *:80>
ServerName example.com
Redirect 301 / https://example.com/
</VirtualHost>
<VirtualHost *:443>
Servername example.com
DocumentRoot /var/www/example.com/wav
ErrorLog /var/log/apache2/example.com/www/error.log
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
当尝试使用openssl验证时:
openssl s_client -connect example.com -port 443
我得到以下结果:
CONNECTED(00000003)
140229655213824:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:252:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 202 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1541086087
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
看起来握手没问题,但证书没有发送。
值得指出的是,Apache日志没有报告任何错误--只是常见的“启动/关闭”消息。apache2ctl configtest
没有报告任何问题。
7条答案
按热度按时间0yg35tkg1#
看起来握手没问题,但证书没有发送。
握手不正常。客户端已发送ClientHello以启动握手,但未收到任何有用的返回信息:
我不知道它在5个字节中返回了什么,但它看起来不像TLS(对于TLS消息来说太短了)。可能是服务器的错误配置,从您显示的配置部分无法看到。也可能是一些中间件(防火墙、负载平衡器...)破坏连接。也可能是您没有连接到预期的服务器(即
example.com
没有解析到您的实际服务器)。我建议你首先检查服务器本身(例如
localhost
),如果这样做有效的话,你可以在远离服务器的地方进行检查。你也可以做一个数据包捕获,看看你会在客户端收到的5个字节中发现什么。z3yyvxxp2#
只是为那些有同样问题的人分享一下。
这是我在Ubuntu 20中使用Apache的经验
我正在编辑默认的ssl.conf文件在SITES-AVAILABLE文件夹,但没有发生任何事情。以上相同的错误是重复无论我做什么。
我将default-ssl.conf从sites-available复制到了SITES-ENABLED文件夹中,没有IfModule mod_ssl. c标记,这样就解决了问题。
希望这些信息能帮助到一些人。
谢谢
qojgxg4l3#
看起来apache的默认 *:80 HTTP处理程序也将侦听443上不匹配的VirtualHost IP,包括回送。
例如,我的机器有一个NAT ip 192.168.32.5,当然还有127.0.0.1环回。如果我的站点配置使用〈VirtualHost 192.168.32.5:443〉,那么任何解析为127.0.0.1:443的请求实际上都是由默认的HTTP处理程序应答的,而不是HTTPS。只需将SSL主机名的主机条目设置为192.168.32.5就可以解决这个问题。
blmhpbnm4#
我遇到了同样的问题。我的
example.com.conf
文件确实正确设置了HTTPS,但我的000-default.conf
文件没有。我似乎忘记了包括SSL证书并为我的000-default.conf
打开SSL引擎,但在我修复了这个问题后,它完美地工作了。我添加到
000-default.conf
的代码:ndasle7k5#
我得到了同样的错误与你.建议您测试您的https连接在本地,添加您的域名到/etc/hosts,ex:127.0.0.1 yourdomain.com为了不让数据包出去。
然后使用“链接”测试本地环境中的https连接,如果没有问题,则是ISP防火墙问题或设置引起的,最后我发现本地https连接正常,并将问题抛给ISP,最终解决了此问题,祝您好运!
dfddblmv6#
设置你的文件类型为ssl,这是确认工作看到FilesMatch部分?如果这是丢失,你会看到这个错误.
xurqigkl7#
我们遇到了一个问题,即我们的HTTPS端口正在为未加密的HTTP提供服务。
原因是我们在同一端口上有两个VirtualHost,其中一个配置为使用
SSLEngine on
,另一个未配置。停用未加密的站点解决了此问题。在两个VirtualHost上使用
SSLEngine on
也可以解决此问题。此外,我们需要一个正确的服务重启来解决这个问题。一个
reload
没有修复这个问题,尽管当时的配置是正确的。