帶捲曲的單向 ssl

帶捲曲的單向 ssl

我知道有很多主題和文章,但我真的在研究這個。

我有一個在 TLS 上運行的 NodeJS 實例。我需要另一台伺服器使用 cURL 連接到它。不幸的是,-k由於我使用的 cURL 版本的限制,我無法執行此操作。

因此,我需要在連接時沒有證書警告。

我的想法是這些:

1. to generate a cert 
2. generate a certificate signing request
3. acquire the CA
4. sign the certificate with the CA
5. Configure NodeJS to send the CA, Cert, and Key during handshakes
6. Have the requesting server do a cURL command, specifying the certificate in the command.

這有任何意義還是本末倒置?我很難區分它的每一部分。

謝謝,

編輯

所以顯然我不知道根據回覆我在做什麼。如果我可以獲得 CA、公鑰和私鑰的副本。那我該怎麼辦呢?請說得詳細一點。

答案1

不幸的是,由於我使用的 cURL 版本的限制,我無法執行 -k 操作。

這從一開始就是錯誤的做法。-k禁用伺服器憑證的任何驗證,從而使中間人攻擊變得容易,即它完全允許 https 旨在防止的事情。

  1. 將 NodeJS 配置為在握手期間傳送 CA、憑證和金鑰
  2. 讓請求伺服器執行 cURL 命令,在命令中指定證書

我不太確定你想在這裡實現什麼,但如果我理解正確的話,你想在伺服器端產生一個證書,然後將該證書發送到客戶端,以便客戶端將來檢查該證書。

這種方法的問題是您需要保護新建立的憑證從伺服器到客戶端的發送。否則,中間人可以將憑證與攻擊者建立的憑證交換,從而繼續進行不可偵測的中間人攻擊。

不幸的是,您的問題描述了解決未知問題的嘗試(請參閱XY問題)。執行 SSL 的常見方法是擁有已被用戶端信任的憑證授權單位 (CA) 以及由該 CA 所頒發的憑證。在大多數情況下,使用像 Let's Encrypt 這樣的公共 CA 來實現此目的,因為這些 CA 已經受到客戶端的信任(隨作業系統或瀏覽器一起提供)。你的問題沒有解釋為什麼你不能走這條既定的路,而是需要發明自己的解決方案。

相關內容