2

我正在与一家外部公司合作。让我们打电话给他们evilcorp.com。我想使用 openssl 来调试双向 SSL 握手。

  • https://evilcorp.com设置为不需要客户端身份验证。
  • https://evilcorp.com/webservices设置为要求客户端身份验证。

如何在 openssl.xml 中指定此路径。所以基本上这有效:

openssl s_client -connect evilcorp.com:443 

但这不起作用,让我gethostbyname 失败

openssl s_client -connect evilcorp.com/webservices:443 

我怎样才能让它工作(如果可能的话)

4

2 回答 2

4

地址中有一个非常简单的错误。这是修复:

“openssl s_client -connect evilcorp.com:443/webservice”

你最后有 443 - 它需要直接在域名之后。

于 2017-12-08T21:47:29.223 回答
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 协议,最后一行必须是空行。如果您有一个严格的 Web 服务器,您可能还需要使用-crlfopenssl 中的选项来使行结束正确。如果一切顺利,服务器现在应该向客户端发出重新协商请求,即完成另一次 TLS 握手。

于 2016-09-09T04:39:48.237 回答