我將PEM文件複製到/ usr/local/share/ca-certificates /中,然後運行update-ca-certificates,並驗證結果證書現在包含在/etc/ssl/certs/ca-certificates.crt中這是由curl-config --ca打印的文件。我還驗證了由openssl s_client -connect example.com:443打印的證書與我的PEM文件相同。然後我繼續得到「錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗」消息。即使我使用curl的--cacert選項(如http://curl.haxx.se/docs/sslcerts.html中所述)來告訴它使用哪個證書,也會發生這種情況。爲什麼不能識別自簽名的SSL證書?
它工作,如果我完全禁用curl -k證書驗證,但我不想這樣做,因爲我試圖編寫一個測試設備,應該適當地測試SSL。
它工作正常,如果我訪問lynx中的相同的URL,通常會抱怨,如果有任何SSL錯誤。但我不能僅僅使用Lynx來測試這個測試工具,除非我能找到某種方式讓Tornado的AsyncHTTPClient使用Lynx而不是libcurl。並且安裝自簽名證書似乎沒有任何意義,但可以滿足Lynx而不是捲曲。
我在Vagrant驅動的VirtualBox中使用Ubuntu 12.04 LTS;它捲曲7.22.0。 SSL終結代理是在同一臺機器上運行的nginx/1.3.13,並且域名通過/ etc/hosts中的條目指向127.0.0.1。
任何線索可能是什麼問題?謝謝。