无法建立SSL连接,我该如何解决我的SSL证书?(Unable to establish SSL c

2019-07-20 19:43发布

我试图wget我自己的盒子,它不能在wget的内部地址(所以说,另一个开发者)。

当我wget的,但我得到这个:

wget http://example.com
--2013-03-01 15:03:30--  http://example.com/
Resolving example.com... 172.20.0.224
Connecting to example.com|172.20.0.224|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://www.example.com/ [following]
--2013-03-01 15:03:30--  https://www.example.com/
Resolving www.example.com... 172.20.0.224
Connecting to www.example.com|172.20.0.224|:443... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.

我相信这是因为我没有证书正确安装。 使用OpenSSL:

openssl s_client -connect example.com:443
CONNECTED(00000003)
15586:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:588:

虽然如果我这样做对其他网站相同的命令,它显示了整个证书。

也许SSL证书从未设置在该域上的Apache conf文件?

如果是这样,我应该是指定的虚拟主机? 难道还有比指定任何其他选择--no-check-certificate ,因为我不想这样做呢?

Answer 1:

SSL23_GET_SERVER_HELLO:未知协议

当OpenSSL的接收之外的其他事情发生这个错误ServerHello在从服务器能够理解的协议版本。 它可以发生,如果服务器则以纯(未加密)HTTP。 它也可能发生,如果服务器只支持TLS例如1.2和客户端不明白,协议版本。 通常情况下,服务器向至少SSL 3.0 / TLS 1.0向后兼容,但也许这特定的服务器是不(通过实现或配置)。

目前还不清楚是否企图通过--no-check-certificate与否。 我会相当惊讶,如果这工作。

一个简单的测试是使用wget (或浏览器),以请求http://example.com:443 (注意http:// ,不https:// ); 如果它的工作原理,SSL未在端口443上启用进一步调试这一点,使用openssl s_client-debug选项,其错误消息前右转储服务器响应OpenSSL将无法解析的前几个字节。 这可能有助于确定问题,特别是如果服务器没有以回答ServerHello消息。 要知道到底OpenSSL的期待,检查源:寻找SSL_R_UNKNOWN_PROTOCOLssl/s23_clnt.c

在任何情况下,着眼于Apache的错误日志可以提供一些见解了。



Answer 2:

在我来说,我没有启用该网站默认的SSL“。 只有“000默认”被列入/etc/apache2/sites-enabled文件夹中。

启用Ubuntu的14 SSL站点LTS,阿帕奇2.4.7:

a2ensite default-ssl
service apache2 reload


Answer 3:

只是一个快速的说明 (以及可能的原因)。

你可以有一个完全正确的VirtualHost设置与_default_:443等在Apache .conf文件。

但是...如果有不正确的设置也监听443端口启用即使一个.conf文件,那么它会带动整个SSL系统瘫痪。

因此,如果你确信你的.conf文件是正确的,尝试禁用其它网站conf文件sites-enabled



Answer 4:

有以下几种可能:

  1. 您的工作站没有用于为您的服务器证书的根CA证书。 究竟如何你解决这取决于你正在运行什么操作系统,什么发布等 (我怀疑这是不相关)
  2. 您的证书安装不正确。 如果您的SSL证书必须要显示的中间证书,并且没有设置,你就可以得到这些警告。
  3. 你确定你已经启用SSL端口443上?

对于初学者来说,以消除(3),如果您远程登录到该端口会发生什么?

假设它不是(3),然后根据你的需要,你可能会被罚款与无视这些错误,并刚好路过--no证书检查。 你可能想使用一个普通的浏览器(通常会直接捆绑根证书),看看事情是幸福的。

如果你想手动验证证书,发布从多个细节openssl s_client输出。 或者使用openssl x509 -text -in /path/to/cert打印出来给你的终端。



Answer 5:

设立一个新的EC2实例时,我有这个问题。 我没有添加HTTPS到我的安全组,所以端口443未打开。



Answer 6:

对我来说,加入到/ etc / hosts中我的服务器的DNS名称,它被映射到127.0.0.1这就造成了

SL23_GET_SERVER_HELLO:未知协议

我真正的DNS名称为127.0.0.1的删除映射解决了这个问题。



Answer 7:

我满足这个同样的问题。 端口443是不是在Centos下打开。

检查443端口使用以下命令:

须藤lsof的-i TCP:443

/etc/httpd/conf.d/ssl.conf的第一行中添加这两条线:

LoadModule ssl_module modules/mod_ssl.so
Listen 443


Answer 8:

我面临的问题是在客户端服务器环境。 客户端试图连接通过HTTP端口80,但希望服务器代理将请求重定向到其他端口和数据是HTTPS。 所以基本上要求通过HTTP的安全信息。 因此,服务器应该有http端口80以及端口客户端请求,让我们说urla:1111\subB

这个问题是服务器对其他一些端口E,G主办这次urla:2222\subB ; 所以客户端试图访问超过1111接收到错误。 纠正端口号应该可以解决这个问题。 在这种情况下,以端口号1111。



文章来源: Unable to establish SSL connection, how do I fix my SSL cert?