【发布时间】:2016-06-20 12:43:36
【问题描述】:
我想使用openssl s_client 使用 CONNECT 请求方法通过代理 (Squid) 打开到源服务器的 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.comHTTP/1.1 200 连接建立
GET /search?q=ip+address HTTP/1.1 Host: www.google.comHTTP/1.1 200 正常
但是,我真的很想能够建立一个 TLS (https) 连接,但我无法让它工作:
CONNECT www.google.com:443 HTTP/1.1 Host: www.google.comHTTP/1.1 200 连接建立
GET /search?q=ip+address HTTP/1.1关闭
我在这里做错了什么?在您说尝试具有 -proxy 参数的 OpenSSL 1.1.x 之前,我已经尝试过了。请注意,上述命令中的 CA 证书、客户端证书和客户端密钥用于连接到我的代理服务器,而不是用于目标服务器 (google.com),如下所示,使用 OpenSSL 1.1.0-pre3(如果我尝试连接到 google: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:HTTP CONNECT 失败
没有可用的对等证书
未发送客户端证书 CA 名称 SSL 握手已读取 0 个字节并写入 25 个字节 验证:好的
新,(无),密码是(无) 不支持安全重新协商 压缩:无 扩展:无 没有协商 ALPN
我能够将我的客户端证书、客户端密钥和 CA 证书加载到 Firefox 中(全部捆绑在一个 pkcs12 文件中),并且能够通过 TLS 连接到各种网站。这应该可以在命令行上实现。
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?。
标签: http ssl https proxy openssl