我正在与外部公司合作。让我们称呼x
。我想使用openssl来调试双向SSL握手。
evilcorp.com
设置为不需要客户端身份验证。https://evilcorp.com
设置为要求客户端身份验证。如何在openssl中指定此路径。所以基本上这是有效的:
https://evilcorp.com/webservices
但是这不起作用并且给了我 gethostbyname失败
openssl s_client -connect evilcorp.com:443
如何才能使其发挥作用(如果可能)
答案 0 :(得分:4)
地址中有一个非常简单的错误。这是修复:
“openssl s_client -connect evilcorp.com:443/webservice”
最后你有443 - 它需要直接进入域名。
答案 1 :(得分:2)
我不确定这是否可以完成,但如果可以完成,那么首先必须使用openssl连接到客户端主机并已指定客户端证书。然后在成功连接内部,您需要说HTTP以访问相关页面。
即。你先连接:
$ openssl s_client -connect host:port -cert cert.pem -key key.pem
... CONNECTED
... Verify return code...
---
然后使用HTTP协议访问URL
GET /protected_page/ HTTP/1.0
Host: example.org
<empty line>
请注意,根据HTTP协议,最后一行必须是空行。您可能还需要在openssl中使用-crlf
选项,以便在您拥有严格的Web服务器时更正行结束。如果一切正常,服务器现在应该向客户端发出重新协商请求,即完成另一次TLS握手。