簡體   English   中英

使用然后刪除自簽名證書 localhost

[英]Using and then removing self-signed certificate localhost

問題背景:

作為計算機網絡課程作業的一部分,我的任務是實現一個代理服務器(使用 python套接字ssl模塊)來處理 https 與我的瀏覽器與源服務器之間的通信的真實服務器.

到目前為止我做了什么:

我已經使用 ssl sockets 實現了上述要求,並且還生成了自簽名'cert.pem' 'key.pem'文件。

我需要做什么:

現在我只需要告訴我的瀏覽器(kubuntu 20.04 上的 chrome 89)接受這個自簽名證書,然后測試我的代理服務器的工作。

閱讀這個 stackoverflow 問題,我可以看到我必須:(1)成為我自己的 CA(2)然后將我的 SSL 證書簽署為 CA。 (3) 然后將 CA 證書(不是 SSL 證書,它進入我的服務器)導入 Chrome。

我的困惑/問題:

因此,如果我這樣做,當我最終完成這項任務時,在我進行所有這些更改之前,我如何反轉所有這些步驟以使我的瀏覽器在之前的 state 中。 另外,如何撤銷“成為你自己的 CA”並刪除我的 CA 簽名的 SSL 證書。 基本上,我希望我的系統恢復到之前的 state,這是在我進行所有這些更改之前。

更新:

我已經完成了之前概述的步驟,但現在出現錯誤。

這是我的代碼片段:

serv_socket = socket(AF_INET, SOCK_STREAM)
serv_socket.bind(('', serv_port))
serv_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)

context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context = context.load_cert_chain('cert.pem', 'key.pem')
context.set_ciphers('EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH')

serv_socket.listen(10)

socket_to_browser, addr = serv_socket.accept()

conn_socket_to_browser = context.wrap_socket(socket_to_browser, server_side=True)

在最后一行conn_socket_to_browser = context.wrap_socket(socket_to_browser, server_side=True)拋出異常: [SSL: HTTPS_PROXY_REQUEST] https 代理請求 (_ssl.c:11)

我究竟做錯了什么?

就像“成為自己的 CA”聽起來一樣迷人,openssl 基本上歸結為創建一個自簽名證書,然后創建一個目錄來存儲一些特定於 CA 的配置(我不完全記得具體細節,但是我認為這只是一些與 CN 和序列號相關的文件)所以基本上扭轉“成為你自己的 CA”步驟就像刪除這個目錄以及你用於 CA 的私鑰和自簽名證書一樣平凡。 就是這樣,CA不再存在。

對於鉻返回到以前的 state,您只需 go 您添加 CA 證書的 CA 列表 select 並將其刪除。 Chrome 將停止接受您的 CA 簽署的證書。

關於您的新問題...在我看來,您已經開發了某種反向代理(這意味着您希望正常的 HTTPS 請求然后重定向到真實服務器)但是您已將 Chrome 配置為將其用作正向代理。 在這種情況下,Chrome 不會向它發送正常的 HTTPS 請求,它會發送一個特殊的非加密 CONNECT 命令,只有在收到非加密響應后,它才會協商 TLS 連接。 這就是 openssl 說“https 代理請求”的原因,因為它檢測到“https 代理請求”(CONNECT 命令)而不是正常的 TLS 協商。

您可以看一下如何將 Python 代理服務器(使用 SSL 套接字)偽裝成 HTTPS 服務器並指定我自己的密鑰來獲取解密數據

它是 python,但我想你會明白的

暫無
暫無

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

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