med*_*iev 58 apache ssl openssl 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.
Run Code Online (Sandbox Code Playgroud)
我相信这是因为我没有正确设置证书.使用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:
Run Code Online (Sandbox Code Playgroud)
如果我在另一个站点上执行相同的命令,则会显示整个证书.
也许ssl证书从未在Apache的conf文件中为该域设置?
如果是这样,我应该在虚拟主机中指定什么?除了指定之外还有其他选择,--no-check-certificate因为我不想这样做吗?
Dan*_*ger 91
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错误日志也可能提供一些见解.
ang*_*sen 20
在我的情况下,我没有启用网站'default-ssl'./etc/apache2/sites-enabled文件夹中仅列出'000-default' .
在Ubuntu 14 LTS,Apache 2.4.7上启用SSL站点:
a2ensite default-ssl
service apache2 reload
Run Code Online (Sandbox Code Playgroud)
Nos*_*.io 11
只是一个快速说明(和可能的原因).
您可以在Apache .conf文件中使用完全正确的VirtualHost设置_default_:443.
但是......如果甚至有一个.conf文件启用了不正确的设置,同时也监听端口443,那么它将使整个SSL系统关闭.
因此,如果您确定.conf文件是正确的,请尝试禁用其他站点.conf文件sites-enabled.
| 归档时间: |
|
| 查看次数: |
269434 次 |
| 最近记录: |