【问题标题】:s_client and gethostbyname failures_client 和 gethostbyname 失败
【发布时间】:2017-01-16 21:33:39
【问题描述】:

我正在与一家外部公司合作。让我们称他们为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 

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

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User、Unix & Linux Stack Exchange 或Information Security Stack Exchange 会是一个更好的提问地点。
  • 所以我很清楚......你提供了虚假信息:“我们打电话给他们evilcorp.com”; {fake|real} 名称的查找失败:"...给我 gethostbyname 失败";你想我们帮你吗?确切地说,当您不提供真实信息时,我们应该如何提供帮助?除了“使用正确的名字”,我们还能说什么?
  • 您不应该请求连接到有效的网址吗? IE。端口然后路径:evilcorp.com:443/webservices。但我不确定指定路径是否有意义,因为连接不使用它。听起来您没有使用正确的工具来测试特定于请求的详细信息。

标签: ssl openssl x509 mutual-authentication pkix


【解决方案1】:

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

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

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

【讨论】:

    【解决方案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 服务器,您可能还需要在 openssl 中使用 -crlf 选项来使行结束正确。如果一切顺利,服务器现在应该向客户端发出重新协商请求,即完成另一次 TLS 握手。

    【讨论】:

      猜你喜欢
      • 2013-08-22
      • 2017-09-18
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 2011-07-13
      • 2015-05-20
      相关资源
      最近更新 更多