通过 Apache 的 SSL 瘦身不执行握手

Thin over SSL through Apache doesn't perform handshake

我运行使用 SSL/Apache 在瘦服务器上使用 PrivatePub。

我有一个像这样的精简配置文件:

ssl: true
cert_chain_file: "{cert directory}/fullchain.pem"
ssl_key_file: "{cert directory}/privkey.pem"
environment: "production"
rackup: "private_pub.ru"

我运行瘦身使用:

$ bundle exec thin -p 9292 -C config/private_pub_thin.yml start

其中private_pub_thin.yml是上面的配置文件。

服务器启动没有问题,并且确实找到了证书文件 - 这与我在 Rails 服务器上使用的相同,并使用 Qualys 进行了检查。

但是我的 Rails 服务器在连接到 Thin 时遇到问题。我用 openssl 试图找出问题所在:

$ openssl s_client -connect 0.0.0.0:9292

Returns:

140388916979344:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 315 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
---

Thin 侧没有错误。

我不确定如何继续弄清楚为什么 Thin 没有进行正确的握手。

已修复。问题似乎是 thin 没有正确使用配置文件。它肯定是在解析它并检查 SSL 证书链和密钥文件的存在,正如我通过在实际 gem 源 中删除调试行 所确认的那样,但不知何故没有使用他们正确地进行 SSL 握手。

将 SSL 证书链和密钥文件作为命令行选项而不是在单独的配置文件中传递效果很好。