无法build立SSL连接,我该如何解决我的SSL证书?
我试图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
以外的东西时发生。 如果服务器使用普通的(未encryption的)HTTP进行回答,就会发生这种情况。 如果服务器仅支持例如TLS 1.2并且客户端不理解协议版本,也可能发生这种情况。 通常情况下,服务器至less向后兼容SSL 3.0 / TLS 1.0,但也许这个特定的服务器不是(通过实施或configuration)。
目前还不清楚你是否试图通过--no-check-certificate
。 如果这能起作用,我会感到很惊讶。
一个简单的testing是使用wget
(或浏览器)来请求http://example.com:443
(注意http://
,而不是https://
); 如果工作正常,则在端口443上未启用SSL。要进一步debugging,请使用带有-debug
选项的openssl s_client
,该选项恰好在错误消息转储了OpenSSL无法parsing的服务器响应的前几个字节之前。 这可能有助于确定问题,特别是如果服务器不回答ServerHello
消息。 要查看OpenSSL期望的是什么,请检查源代码:在ssl/s23_clnt.c
。
在任何情况下,看看Apache的错误日志也可以提供一些洞察力。
在我的情况下,我没有启用网站“default-ssl”。 在/etc/apache2/sites-enabled
文件夹中只列出了“000-default”。
在Ubuntu 14 LTS,Apache 2.4.7上启用SSL站点:
a2ensite default-ssl service apache2 reload
有几种可能性:
您的工作站没有用于签署服务器证书的根CA证书。 你如何解决这个问题取决于你正在运行什么操作系统和什么版本等。(我怀疑这是不相关的)-
您的证书没有正确安装。如果您的SSL证书要求提交中间证书,而您没有设置该证书,则可以获得这些警告。 - 你确定你已经在端口443上启用了SSL吗?
对于初学者来说,为了消除(3),如果你telnet到那个端口会发生什么?
假设它不是(3),那么根据你的需要,你可能会忽略这些错误,只是通过 – 无证书检查。 您可能想要使用常规的浏览器(通常会直接捆绑根证书),看看事情是否快乐。
如果要手动validation证书,请从openssl s_client
输出中发布更多详细信息。 或者使用openssl x509 -text -in /path/to/cert
将其打印输出到terminal。
只是一个简短的说明 (和可能的原因)。
您可以在Apache .conf文件中使用_default_:443
等来设置完全正确的VirtualHost
设置。
但是…如果甚至有一个.conf文件启用了不正确的设置,也会监听端口443,那么它将使整个SSL系统closures。
因此,如果您确定您的.conf文件是正确的,请尝试在sites-enabled
禁用其他站点.conf文件。
设置新的EC2实例时,我遇到了这个问题。 我没有将HTTPS添加到我的安全组,因此端口443未打开。
我遇到了同样的问题。 端口443在Centos中未打开。
使用以下命令检查443端口:
sudo lsof -i tcp:443
在/etc/httpd/conf.d/ssl.conf的第一行添加这两行:
LoadModule ssl_module modules/mod_ssl.so Listen 443
我面临的问题是在客户端服务器环境中。 客户端试图通过http端口80进行连接,但希望服务器代理将请求redirect到某个其他端口,并且数据为https。 所以基本上要求通过HTTP安全的信息。 所以服务器应该有HTTP端口80以及端口客户端请求,让我们说urla:1111\subB
。
问题是服务器托pipe在其他一些端口e,g urla:2222\subB
; 所以客户试图访问过1111正在接收错误。 更正端口号应该可以解决这个问题。 在这种情况下,端口号码1111。
- WAMP 403禁止在Windows 7上的消息
- 通过htaccess拒绝直接访问文件夹和文件
- 在Apache HTTP服务器上设置mod_proxy
- 使用身份validation设置Apache代理
- 如何限制我的网站的API用户?
- 为什么Spark作业在使用org.apache.spark.shuffle.MetadataFetchFailedException时失败:在猜测模式下丢失shuffle 0的输出位置?
- 如何防止Apache httpd(MAMP)中的http文件caching
- PHP中的HTTP_HOST和SERVER_NAME有什么区别?
- Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING错误