我试图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
,因为我不想这样做呢?
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_PROTOCOL
在ssl/s23_clnt.c
。
在任何情况下,着眼于Apache的错误日志可以提供一些见解了。
在我来说,我没有启用该网站默认的SSL“。 只有“000默认”被列入/etc/apache2/sites-enabled
文件夹中。
启用Ubuntu的14 SSL站点LTS,阿帕奇2.4.7:
a2ensite default-ssl
service apache2 reload
只是一个快速的说明 (以及可能的原因)。
你可以有一个完全正确的VirtualHost
设置与_default_:443
等在Apache .conf文件。
但是...如果有不正确的设置也监听443端口启用即使一个.conf文件,那么它会带动整个SSL系统瘫痪。
因此,如果你确信你的.conf文件是正确的,尝试禁用其它网站conf文件sites-enabled
有以下几种可能:
您的工作站没有用于为您的服务器证书的根CA证书。 究竟如何你解决这取决于你正在运行什么操作系统,什么发布等 (我怀疑这是不相关) -
您的证书安装不正确。 如果您的SSL证书必须要显示的中间证书,并且没有设置,你就可以得到这些警告。 - 你确定你已经启用SSL端口443上?
对于初学者来说,以消除(3),如果您远程登录到该端口会发生什么?
假设它不是(3),然后根据你的需要,你可能会被罚款与无视这些错误,并刚好路过--no证书检查。 你可能想使用一个普通的浏览器(通常会直接捆绑根证书),看看事情是幸福的。
如果你想手动验证证书,发布从多个细节openssl s_client
输出。 或者使用openssl x509 -text -in /path/to/cert
打印出来给你的终端。
设立一个新的EC2实例时,我有这个问题。 我没有添加HTTPS到我的安全组,所以端口443未打开。
对我来说,加入到/ etc / hosts中我的服务器的DNS名称,它被映射到127.0.0.1这就造成了
SL23_GET_SERVER_HELLO:未知协议
我真正的DNS名称为127.0.0.1的删除映射解决了这个问题。
我满足这个同样的问题。 端口443是不是在Centos下打开。
检查443端口使用以下命令:
须藤lsof的-i TCP:443
在/etc/httpd/conf.d/ssl.conf的第一行中添加这两条线:
LoadModule ssl_module modules/mod_ssl.so
Listen 443
我面临的问题是在客户端服务器环境。 客户端试图连接通过HTTP端口80,但希望服务器代理将请求重定向到其他端口和数据是HTTPS。 所以基本上要求通过HTTP的安全信息。 因此,服务器应该有http端口80以及端口客户端请求,让我们说urla:1111\subB
。
这个问题是服务器对其他一些端口E,G主办这次urla:2222\subB
; 所以客户端试图访问超过1111接收到错误。 纠正端口号应该可以解决这个问题。 在这种情况下,以端口号1111。