apache client authentication - 将客户端证书的指纹设置为头值

时间:2014-05-22 13:57:59

标签: apache ssl authentication

我有一个有效的ssl客户端身份验证设置。有没有办法获取客户端证书指纹并将请求转发到另一个应用程序时将其放在请求标头?

根据: http://httpd.apache.org/docs/current/mod/mod_ssl.html

没有什么比如:

RequestHeader set SSL_CLIENT_X_FINGERPRINT "%{SSL_CLIENT_X_FINGERPRINT}s" 

任何帮助表示赞赏

烫发

1 个答案:

答案 0 :(得分:0)

您可以做的最接近的事情是传递整个证书(SSL_CLIENT_CERT)并在指纹到达您的应用程序后计算指纹。

根据它的实施方式,这不应该太难。例如,如果需要,您可以在Java servlet环境中实现Filter:解码PEM编码的证书以使其以DER形式获取,将您获得的byte []数组传递给{{1}使用您需要的算法初始化(并且可能对结果进行十六进制编码)。

请注意,“指纹”是一个相当松散的词。现在大多数工具都会使用SHA-1,但情况并非总是如此(这可能会改变)。

作为旁注,您尝试做的事情表明您没有使用传统的PKI进行身份验证,而是接受潜在的自签名证书(或由未知CA签名的证书)并将这些指纹与列表进行比较知道。如果是这种情况,您可能对所有这些的“X.509证书”方面不太感兴趣,但您只是将此证书用作公钥容器(SSL / TLS将保证您客户端具有匹配的私钥),因此您可能会发现比较公钥而不是证书更灵活。