Python 2.7.9現(xiàn)在對SSL證書驗證更加嚴(yán)格。太棒了!對于以前運行的程序現(xiàn)在出現(xiàn)CERTIFICATE_VERIFY_FAILED錯誤,我并不感到驚訝。但是我似乎無法使它們正常工作(沒有完全禁用證書驗證)。一個程序正在使用urllib2通過https連接到Amazon S3。我將根CA證書下載到名為“ verisign.pem”的文件中,然后嘗試以下操作:import urllib2, sslcontext = ssl.create_default_context()context.load_verify_locations(cafile = "./verisign.pem")print context.get_ca_certs()urllib2.urlopen("https://bucket.s3.amazonaws.com/", context=context)即使根CA在第4行中正確打印,我仍然會收到CERTIFICATE_VERIFY_FAILED錯誤。openssl可以很好地連接到該服務(wù)器。實際上,這是我用來獲取CA證書的命令:openssl s_client -showcerts -connect bucket.s3.amazonaws.com:443 < /dev/null我拿了鏈中的最后一個證書,并將其放在PEM文件中,openssl看起來不錯。這是帶有以下內(nèi)容的Verisign證書:Serial number: 35:97:31:87:f3:87:3a:07:32:7e:ce:58:0c:9b:7e:daSubject key identifier: 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33SHA1 fingerprint: F4:A8:0A:0C:D1:E6:CF:19:0B:8C:BC:6F:BC:99:17:11:D4:82:C9:D0有什么想法如何使它與啟用驗證一起工作嗎?
2 回答

翻過高山走不出你
TA貢獻1875條經(jīng)驗 獲得超3個贊
這是一個很好的答案,我已將其標(biāo)記為正確。謝謝!我的實際錯誤是通過證書[2]并期望驗證證書鏈(也嘗試過[0]和[1])。我以為[2]是根證書。我不知道要尋找[OT]還是在哪里找到它。一旦您告訴我指紋,我就可以在/usr/local/share/certs/ca-root-nss.crt(FreeBSD)中找到它,但是我也可以在Firefox中找到它或從Verisign下載它。但是您怎么知道哪一個根證書是正確的呢?瀏覽器是否通過發(fā)行者字符串識別它們?
添加回答
舉報
0/150
提交
取消