LetsEncrypt SSL错误- SSL例程:ssl3_get_record:错误的版本号

g52tjvyc  于 2022-11-14  发布在  其他
关注(0)|答案(7)|浏览(297)

我已经设法从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没有报告任何问题。

0yg35tkg

0yg35tkg1#

看起来握手没问题,但证书没有发送。
握手不正常。客户端已发送ClientHello以启动握手,但未收到任何有用的返回信息:

|- ClientHello
                                           ---
SSL handshake has read 5 bytes and written 202 bytes
                      ---
                       |- nothing useful from server

我不知道它在5个字节中返回了什么,但它看起来不像TLS(对于TLS消息来说太短了)。可能是服务器的错误配置,从您显示的配置部分无法看到。也可能是一些中间件(防火墙、负载平衡器...)破坏连接。也可能是您没有连接到预期的服务器(即example.com没有解析到您的实际服务器)。
我建议你首先检查服务器本身(例如localhost),如果这样做有效的话,你可以在远离服务器的地方进行检查。你也可以做一个数据包捕获,看看你会在客户端收到的5个字节中发现什么。

z3yyvxxp

z3yyvxxp2#

只是为那些有同样问题的人分享一下。
这是我在Ubuntu 20中使用Apache的经验
我正在编辑默认的ssl.conf文件在SITES-AVAILABLE文件夹,但没有发生任何事情。以上相同的错误是重复无论我做什么。
我将default-ssl.conf从sites-available复制到了SITES-ENABLED文件夹中,没有IfModule mod_ssl. c标记,这样就解决了问题。
希望这些信息能帮助到一些人。
谢谢

qojgxg4l

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就可以解决这个问题。

blmhpbnm

blmhpbnm4#

我遇到了同样的问题。我的example.com.conf文件确实正确设置了HTTPS,但我的000-default.conf文件没有。我似乎忘记了包括SSL证书并为我的000-default.conf打开SSL引擎,但在我修复了这个问题后,它完美地工作了。
我添加到000-default.conf的代码:

SSLEngine On
SSLCertificateFile /etc/ssl/example.com/domain.cert.pem
SSLCertificateKeyFile /etc/ssl/example.com/private.key.pem
ndasle7k

ndasle7k5#

我得到了同样的错误与你.建议您测试您的https连接在本地,添加您的域名到/etc/hosts,ex:127.0.0.1 yourdomain.com为了不让数据包出去。
然后使用“链接”测试本地环境中的https连接,如果没有问题,则是ISP防火墙问题或设置引起的,最后我发现本地https连接正常,并将问题抛给ISP,最终解决了此问题,祝您好运!

dfddblmv

dfddblmv6#

设置你的文件类型为ssl,这是确认工作看到FilesMatch部分?如果这是丢失,你会看到这个错误.

SSLEngine on
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
SSLCertificateFile /etc/letsencrypt/live/mysite.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mysite.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3
#SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5
#SSLCipherSuite "AES256-SHA"
SSLCipherSuite HIGH:!aNULL:!MD5
xurqigkl

xurqigkl7#

我们遇到了一个问题,即我们的HTTPS端口正在为未加密的HTTP提供服务。
原因是我们在同一端口上有两个VirtualHost,其中一个配置为使用SSLEngine on,另一个未配置。
停用未加密的站点解决了此问题。在两个VirtualHost上使用SSLEngine on也可以解决此问题。
此外,我们需要一个正确的服务重启来解决这个问题。一个reload没有修复这个问题,尽管当时的配置是正确的。

相关问题