如何通过 HTTPS 使用客户端证书?

Posted

技术标签:

【中文标题】如何通过 HTTPS 使用客户端证书?【英文标题】:How to use a client certificate with HTTPS? 【发布时间】:2015-05-08 20:34:40 【问题描述】:

您如何提供使用 SSL 客户端证书发出 HTTPS 请求所需的所有详细信息?

【问题讨论】:

这可能是一个很好的常见问题解答,因为 Ruby 文档和示例有时会出错。我完全避免使用 Ruby,因为作为一个读过这本书的初学者,我不知道如何让基本的安全服务发挥作用。不幸的是,我不知道如何将其标记为常见问题解答项目。 【参考方案1】:

好的,所以我翻遍了所有地方,找到了我需要的点点滴滴。我想为其他正在苦苦挣扎的人提供这个。所有文件都以 PEM 格式放置。我使用client.key 文件创建了一个提供给服务器管理员的CSR。作为回报,我得到了一个 P7B 文件,然后我需要将其转换为 PEM 文件。 root.cerclient.cer 文件来自 P7b。

  uri = URI.parse(my_url_stril)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http.cert = OpenSSL::X509::Certificate.new(File.read("client.cer"))
  http.ca_file = 'root.cer'
  http.key = OpenSSL::PKey::RSA.new(File.read("client.key"))
  request = Net::HTTP::Post.new(uri.request_uri)
  request.body = body
  response = http.request(request)

如果您需要更多详细信息,请告诉我!

【讨论】:

哇,答案很快……就好像您问这个问题只是为了回答它一样。 :) @DavidHoelzer 我做到了!它们是同时发布的。 @jww 2 我需要的突破。 p7b 的解析(需要一台 PC 来完成)并且您向我询问了 .key 文件。一旦我从 p7b 中取出 client.cert 并加载 .key 文件,一切正常!我什至不需要对密码做任何事情。非常感谢!!可以私信我吗? @TomRossi 我想我偶然发现了同样的问题。我唯一的问题是你是如何设法从 p7b 文件中提取 client.key 和 root.cer 的。

以上是关于如何通过 HTTPS 使用客户端证书?的主要内容,如果未能解决你的问题,请参考以下文章

nginx配置https及Android客户端访问自签名证书

通过 HTTPS 上的客户端证书对 WCF 请求进行身份验证

带你使用Nginx实现HTTPS双向验证

客户端证书认证请求实操

https 安全证书如何申请

使用 jersey 客户端通过 HTTPS 调用 api 时出现错误 handshake_failure。我已关闭服务器证书有效性检查