我堅持了幾天,仍然無法弄清楚。我只想在python中構建一個簡單的TLS c/s通信。對於我使用EC2的服務器,客戶端使用我自己的筆記本電腦。我設置和測試正常的套接字通信,一切正常。tls客戶端證書
當我從官方文檔中嘗試this tutorial時,我遇到了問題。對於下面的客戶端代碼:
# require a certificate from the server
ssl_sock = ssl.wrap_socket(s,
ca_certs="/etc/ca_certs_file",
cert_reqs=ssl.CERT_REQUIRED)
據我所知,部分/etc/ca_certs_file
應該從CA的一些證書。我很困惑,我應該在哪裏找他們。我實際上在EC2服務器上找到了/etc/ssl/certs
中的一些.pem文件,但在我的筆記本電腦上沒有任何文件。
我也試圖根據this tutorial on openssl生成一個用戶證書,我遵循的步驟,在我的EC2服務器產生cakey.pem
,cacert.pem
服務器,userkey.pem
,usercert-req.pem
客戶端,都在同一個目錄下。當我執行openssl ca -in usercert-req.pem -out usercert.pem
,它輸出錯誤:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
unable to load certificate
140420412405408:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE
所以實際上應該如何獲取生成此證書文件?在服務器端生成,然後等待客戶端通過無線請求,或者在客戶端生成,或者從第三方獲取並直接在客戶端使用?
任何人都可以提供任何指導?任何幫助表示讚賞。
感謝您的回覆。那麼通過命令,我們是否會生成兩個具有相同名稱的.pem文件,以便將所有信息保存在一個文件中? – Yulong
是的,兩個密鑰將被放置在同一個文件中,無論您在何處生成該文件,只需將其複製到另一側,以便客戶端和服務器都將使用該文件。 順便說一句,如果你指定了兩個不同的文件名,這些鍵當然會放在兩個不同的文件中。 – andrean
我明白了。我得到了它的工作。非常感謝你! – Yulong