1

在 ASP.Net Web 应用程序中,它在 HTTPS 上运行并在 web.config 中设置了 RequireClientCertificate,我需要在服务器上接收用户的客户端证书和请求的数字签名。证书在 HttpContext.Request.ClientCertificate 中找到,但我找不到签名数据。帖子参数会自动解码和解密,但我也需要签名。有谁知道它在哪里找到或有可能得到它?

还有一个问题,当浏览器询问您的证书并将其交给服务器时,它是使用您的私钥加密整个 HttpRequest 还是仅加密其中的一部分(例如 post params)?

谢谢你的帮助

4

1 回答 1

1

还有一个问题,当浏览器询问您的证书并将其交给服务器时,它是使用您的私钥加密整个 HttpRequest 还是仅加密其中的一部分(例如 post params)?

首先,“用私钥加密”是没有意义的:你用私钥签名。虽然某些算法(例如 RSA)使用非常相似的程序来加密和签名,但“加密”意味着“隐藏”某些东西:如果任何人拥有公钥可以破译它,你就不会隐藏任何东西。

其次,SSL/TLS 使用对称密钥(在握手期间协商)进行加密,而不是证书中的密钥。在这种情况下,整个 HTTP 请求确实会被加密。

证书在 HttpContext.Request.ClientCertificate 中找到,但我找不到签名数据。帖子参数会自动解码和解密,但我也需要签名。有谁知道它在哪里找到或有可能得到它?

使用客户端证书时签名的是握手消息,而不是 HTTP 请求。一旦您的 SSL/TLS 堆栈进行了适当的验证,无论在技术上还是在管理上,它都不太可能有任何用途。(这就是为什么它通常无法访问的原因。)

于 2013-11-04T11:30:12.013 回答