簡體   English   中英

Node.js https 帶有自定義 CA 鏈的 GET 請求

[英]Node.js https GET request with custom CA chain

我正在嘗試從我的大學日程網站發出簡單的 GET 請求。 這是 URL https://planzajec.uek.krakow.pl/ 准確地說https://planzajec.uek.krakow.pl/index.php?typ=G&id=190201&okres=184ofmy27 schedule 284&xml27其中 i . 所以我試着提出如下簡單的要求

const https = require('https');
const request = https.get('https://planzajec.uek.krakow.pl', (result) => {
    console.log(result.statusCode);
});

並得到錯誤:錯誤:寫入 EPROTO 80C5F30601000000:錯誤:0A000172:SSL 例程:tls12_check_peer_sigalg:錯誤的簽名類型:../deps/openssl/openssl/ssl/t1_lib.c:1565:

雖然當我嘗試在https://www.google.com/甚至我大學的主頁 https://uek.krakow.pl/上提出這個請求時,我得到了 200 OK,所以時間表網站有問題. 經過幾個小時的挖掘,我發現 CA 鏈在那里被打破了。

https://www.ssllabs.com/ssltest/analyze.html?d=planzajec.uek.krakow.pl

鏈條問題:不完整

現在我正在嘗試在請求中傳遞這些 CA 證書,但由於某種原因它仍然無法正常工作。 (嘗試在 one.pem 文件中合並並傳遞單獨的 .pem 文件數組)

const https = require('https');
const consolidate_ca = fs.readFileSync('consolidate.pem');
const request = https.get('https://planzajec.uek.krakow.pl/', { ca:consolidate_ca } , (result) => {
    console.log(result.statusCode);
});

出於好奇,我檢查了它是否適用於 python。

import requests
r = requests.get('https://planzajec.uek.krakow.pl/', verify='consolidate.pem')
print(r.status_code)

並得到 200 OK(沒有驗證參數我得到了與 JS 中類似的錯誤)。

正如我在評論中指出的那樣。 這種方法非常不安全,互聯網上可能有更好的解決方案。 您可以設置一個環境變量來完全禁用 ssl 和 tls

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
const https = require('https')
const request = https.get('https://planzajec.uek.krakow.pl/index.php?typ=G&id=190201&okres=1&xml ',async (result) => {
    console.log(result.statusCode);
});

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM