使用SSL的雅司发出错误“SSL接受失败:超时”

时间:2017-01-24 03:33:43

标签: ssl timeout yaws certbot

我使用certbot为我的网站生成一个Let的加密证书,但是当我尝试连接到它时,Yaws给我一个SSL accept failed: timeout错误(在它超时之后)。有趣的是,当我将example.com重定向到我的机器上的hosts文件中的服务器的本地IP地址并连接到example.com:8080时,它可以正常工作,但是当我连接到example.com而没有编辑主机时文件或当我通过4G连接手机时。这是我的网络服务器的配置文件(它是conf.d中唯一的配置文件):

<server www.example.com>
    port = 8080
    listen = 0.0.0.0
    docroot = /usr/share/yaws
    <ssl>
        keyfile = /etc/letsencrypt/live/example.com/privkey.pem
        certfile = /etc/letsencrypt/live/example.com/fullchain.pem
    </ssl>
</server>

我确保yaws用户可以读取密钥文件和证书。密钥文件旁边是README,其中包含以下内容:

`privkey.pem`  : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem`    : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem`     : will break many server configurations, and should not be used
                 without reading further documentation (see link below).
We recommend not moving these files. For more information, see the Certbot
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.

所以我相信我已经使用了正确的文件(其他人给了我badmatch{tls_alert,"decrypt error"}等错误。我也尝试了一些琐碎的事情,比如在URL之前编写https://,但它没有解决问题,而且,当服务器在没有SSL的情况下运行时,一切正常。在我的服务器上运行的Erlang版本是Erlang / OTP 19.此外,如果不清楚,该域实际上不是example.com

此外,如果重要,example.com会通过cname重定向到examplecom.duckdns.org

更新

当默认https端口为端口8080时,我的服务器正在侦听从外部端口80转发的端口443,用于https连接。我的另一个错误是连接到http://example.com而不是https://example.com。将外部端口443转发到内部端口8443并配置偏航以侦听端口8443,修复了所有内容。

1 个答案:

答案 0 :(得分:0)

为了确保理解,当您执行curl -v https://example.com:8080之类的操作时,会出现超时,就是这样吗? (此处https协议和端口8080当然是强制性的)

在SSL虚拟主机上收到未加密的请求时,可以触发接受期间的SSL超时。

您是否还可以提供以下命令的输出:

echo -e "HEAD / HTTP/1.0\r\n\r\n" | openssl s_client -connect mysite.com:8080 -ign_eof 

最后,你在运行哪个版本的雅司?哪个操作系统?