[英]Unable to verify the first certificate; NodeJs vs Python Requests
我正在嘗試從 NodeJs 向 stackshare.io 發出 http 請求:
var https = require('https');
var options = {
host: 'www.stackshare.io',
};
https.get(options, function (http_res) {
var data = "";
http_res.on("data", function (chunk) {
data += chunk;
console.log('data:', data)
});
});
我得到:
Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1055:34)
at TLSSocket.emit (events.js:198:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8)
如果我將host
更改為www.google.com
,它就可以工作。 這是否意味着 stackshare 處理其 SSL 證書的方式存在問題?
我發現了幾個類似(但略有不同)的問題,建議嘗試這個:
var rootCas = require('ssl-root-cas/latest').create();
require('https').globalAgent.options.ca = rootCas;
但我仍然遇到同樣的錯誤。
如果我使用python 請求,它可以工作:
import requests
print requests.get('https://stackshare.io').content
python 請求是否對 SSL 證書更寬容?
該站點設置不正確,未提供必要的中間證書來驗證信任鏈。 瀏覽器通常通過嘗試以某種方式獲取丟失的證書來解決此類問題,而大多數其他應用程序則沒有。 您可以通過查看SSLLabs 報告來看到此問題,其中明確指出“此服務器的證書鏈不完整。等級上限為 B。”
如果我使用 python 請求,它可以工作:...
python 請求是否對 SSL 證書更寬容?
對我不起作用,但會導致相同的錯誤:
requests.exceptions.SSLError: ...
u'[SSL: CERTIFICATE_VERIFY_FAILED] 證書驗證失敗...
可能是您使用了非常舊的 Python 版本,其中正確的證書驗證已關閉,或者您已經將缺少的中間證書導入到requests
使用的信任庫中(這可能與 nodejs 使用的不同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.