通过HTTP传递客户端证书

3

我们有一个使用案例,需要通过HTTP传递客户端证书和密钥。

并且这需要在单个HTTP请求中完成。也就是说,客户端将发送HTTP GET请求,在HTTP响应中我们需要发送客户端证书和密钥。

我尝试进行以下测试:

  1. 我生成了PEM文件,其中包含客户端密钥和证书,并将HTTP响应的内容类型设置为"application/x-pem-file" [结果]:Mozilla和Chrome不理解MIME类型,它要求保存。

    1. 如果我使用MIME类型"application/x-x509-user-cert",Mozilla会解释MIME类型,但会抛出错误。

我不确定如何实现这一点(通过HTTP传递客户端证书和密钥)。请帮助我们。

谢谢 Pradeep

1个回答

1

首先,您需要确定要发送哪个密钥。私钥几乎从不以这种方式传输-这是一个很大的安全漏洞。如果您只发送公钥-此密钥已包含在证书中。

现在,证书的规范格式是二进制DER编码。PEM和任何同样非标准的东西都没有被浏览器识别的机会。也就是说,您可以发送并希望它将由浏览器处理的是二进制DER证书本身。


感谢您的回复先生。我已经创建了DER格式的证书,并尝试仅传递客户端证书,但在浏览器上出现了“此个人证书无法安装,因为您没有拥有请求证书时创建的相应私钥”的错误提示。使用的MIME类型是“application/x-x509-user-cert”。如果我将MIME类型更改为“application/x-x509-ca-cert”,则浏览器可以下载,但它会将其视为CA证书。您的建议将非常有帮助。谢谢。 - Pradeep
@Pradeep,那么你想要实现什么呢?如果你坚持要从服务器发送私钥,那么我猜你最好使用PFX文件(至少在Windows上)。 - Eugene Mayevski 'Callback
1
很遗憾,先生,我尝试使用 MIME 类型“application/x-pkcs12”,但 Chrome/ Mozilla 无法解释它。我使用了以下命令进行转换:openssl pkcs12 -export -out client.pfx -in client.crt -inkey client.key - Pradeep
@Pradeep 检查Firefox的源代码是有意义的,以了解它是否理解与证书相关的任何内容类型,以及它如何处理它们。 - Eugene Mayevski 'Callback
让我们在聊天中继续这个讨论(http://chat.stackoverflow.com/rooms/31403/discussion-between-pradeep-and-eugene-mayevski-eldos-corp)。 - Pradeep
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接