請耐心等待,因為我可能對創建證書以實作 TLS 連接缺乏一些了解。
我正在嘗試與從客戶端到服務器加密的 TLSv1.2 建立連接。我已經在客戶端創建了自己的 CA 證書和 CSR 并繼續對客戶端進行簽名。
在生成 CSR 并使用 CA 證書對其進行簽名后,在客戶端:
- 客戶端證書.pem
- 客戶端-csr.pem
- 客戶端密鑰.pem
使用的命令:
- openssl req -nodes -newkey rsa:4096 -keyout client-key.pem -out client-csr.pem
- openssl verify -CAfile ca-cert.pem client-cert.pem
在服務器端,我還創建了一個 CSR 并使用我自己的 CA 對其進行了簽名:
- 服務器-cert.pem
- 服務器密鑰.pem
在服務器端,在我創建 CA 證書并簽署客戶端證書之后:
- ca-cert.pem
- ca-cert.srl
- ca-key.pem
使用的命令:
- openssl req -x509 -newkey rsa:4096 -days 3650 -keyout ca-key.pem -out ca-cert.pem
- openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
- openssl verify -CAfile ca-cert.pem client-cert.pem
所以在我的 nginx 端,我是這樣配置的。(流連接)
server {
listen 10043;
proxy_ssl on;
proxy_ssl_protocols TLSv1.2;
proxy_ssl_session_reuse on;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_certificate /etc/nginx/certs/tls_certs/client-cert.pem;
ssl_certificate_key /etc/nginx/certs/tls_certs/client-key.pem;
ssl_dhparam /etc/nginx/certs/tls_certs/dhparam.pem;
access_log /var/log/nginx/lpe-ing.log proxy;
proxy_pass 123.456.789.123:12345;
}
在我的服務器端點,它正在使用 stunnel,我不確定如何配置 CA 證書。
cert = server-cert.pem
key = server-key.pem
CAfile = ca-cert.pem
verify = 3
sslVersion = all
options = NO_SSLv2
options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1
[ABC-1]
accept = 12345
connect = localhost:11881
- 我的配置有問題嗎?
- 我是否在服務器端和客戶端都缺少更多配置?
- 如果我關閉驗證,驗證 = 0,那么我就可以連接了。
當我執行此“openssl s_client -connect localhost:10043 -tls1_2”時,我從 stunnel 收到此錯誤
CONNECTED(00000003)
write:errno=104
隧道日志:
2021.11.01 08:17:05 LOG3[14538:140387789453056]: SSL_accept: 140890C7: error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate
uj5u.com熱心網友回復:
我對 Nginx 配置不熟悉,所以不知道你是否理解正確。但我可以判斷你在測驗中做錯了什么。您已成功測驗不允許未經身份驗證的客戶端進行連接。OpenSSL 錯誤并不總是很清楚,但在這種情況下,來自服務器的訊息相當清楚:
ssl3_get_client_certificate:peer 沒有回傳證書
您已將服務器配置為需要客戶端身份驗證。但是客戶端沒有發送證書,因此無法進行客戶端身份驗證,服務器通過關閉連接來拒絕連接嘗試。(TLS 客戶端驗證是這樣作業的:客戶端發送一個證書,然后發送一個簽名,證明它知道相應的私鑰。)客戶端上的錯誤是“連接重置由對等方”。
您需要將簽名證書和私鑰傳遞給您的客戶端。
openssl s_client -connect localhost:10043 -tls1_2 -cert client_cert.pem -key client_key.pem
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/345138.html
標籤:nginx ssl openssl tls1.2 隧道
上一篇:WPF不能正常格式化按鈕和文本框
