nginx SSL_do_handshake()失败

这是我第一次在我的开发机器上configurationSSL证书(我不是系统pipe理员 – 我需要SSL来与Facebook一起工作)。 我决定与ngingx代理一个rubysinatra应用程序,没有什么幻想。

这是我尝试连接到我的HTTP服务器时得到的错误。 AFAIK nginx是这里的罪魁祸首:

2015/11/26 15:42:03 [info] 42872#0: *3 SSL_do_handshake() failed (SSL: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca:SSL alert number 48) while SSL handshaking, client: 31.13.113.70, server: 0.0.0.0:4567 

这就是我所做的:

  1. 从RapidSSL下载了cert(a .key,.crt和.csr)
  2. 从RapidSSL下载可信任的证书( https://knowledge.rapidssl.com/library/VERISIGN/ALL_OTHER/RapidSSL%20Intermediate/RapidSSL_CA_bundle.pem )并保存在/ etc / ssl / cert /
  3. 安装在本地nginx并configuration如下:

     upstream server { server 0.0.0.0:8080; } server { listen 4567 default_server ssl; server_name sandbox.thing.it; ssl_certificate /Users/ngw/thing/server.crt; ssl_certificate_key /Users/ngw/thing/server.key; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/ssl/cert/RapidSSL_CA_bundle.pem; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 10s; ssl_prefer_server_ciphers On; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; location / { proxy_pass http://server; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 
  4. 在端口4567和8080上分别重启nginx和puma

  5. 去https://sandbox.thing.it ,应用程序按预期作出响应,连接被encryption,证书似乎是正确的。

  6. 去Facebook并尝试注册一个新的页面订阅( https://developers.facebook.com/docs/graph-api/webhooks/v2.2 )。 如果Facebook尝试validation我的callback链接时,报告错误(SSL_do_handshake()失败)

任何build议?