我想使用openssl s_client
通過使用CONNECT請求方法通過代理(Squid)向源服務器打開TLS連接。我使用的是客戶端證書連接到代理服務器,如圖所示:openssl s_client通過代理與clientAuth的TLS連接
openssl s_client -connect my_proxy:4443 -CAfile /etc/ssl/ca/ca.crt -cert /etc/ssl/cert/client.crt -key /etc/ssl/key/client_key.pem
運行以上後,連接信息打印出罰款,然後我進入CONNECT和GET方法,這正常工作:
CONNECT www.google.com:80 HTTP/1.1 Host: www.google.com
HTTP/1.1 200連接已建立
GET /search?q=ip+address HTTP/1.1 Host: www.google.com
HTTP/1.1 200 OK
但是,我真的希望能夠建立一個TLS(HTTPS)連接,但我一直沒能得到它的工作:
CONNECT www.google.com:443 HTTP/1.1 Host: www.google.com
HTTP/1.1 200連接建立
GET /search?q=ip+address HTTP/1.1
關閉
我在做什麼錯在這裏?在你開始嘗試使用具有-proxy參數的OpenSSL 1.1.x之前,我已經嘗試過了。請注意,上述命令中的CA證書,客戶端證書和客戶端密鑰用於連接到我的代理服務器,而不是用於目標服務器(google.com),如下面的OpenSSL 1.1.0-pre3所示(如果I嘗試連接到谷歌:443)。
openssl s_client -connect google.com:80 -proxy my_proxy:4443 -CAfile /etc/ssl/ca/ca.crt -cert /etc/ssl/cert/client.crt -key /etc/ssl/key/client_key.pem
連接(00000003)
的s_client.First:HTTP連接失敗
可用
沒有客戶端證書CA名沒有同行證書發送 SSL握手已經閱讀0字節寫25字節 驗證:確定
新,(無),密碼是(NONE) 安全的重新協商不支持 壓縮:NONE 擴展:NONE 沒有ALPN協商
我可以載入我的客戶端證書,客戶端密鑰,和CA認證到Firefox(全部捆綁在一個pkcs12文件中),並且可以通過TLS連接到各種網站。這應該可以在命令行上進行。
Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306)。 – jww