apache客户端身份验证-将客户端证书的指纹设置为头值

apache客户端身份验证-将客户端证书的指纹设置为头值,apache,ssl,authentication,Apache,Ssl,Authentication,我有一个工作的ssl客户端身份验证设置。在将请求转发到其他应用程序时,是否有方法获取客户端证书指纹并将其放入请求头中 根据: 没有什么能比得上: RequestHeader set SSL_CLIENT_X_FINGERPRINT "%{SSL_CLIENT_X_FINGERPRINT}s" 谢谢你的帮助 marcel您可以做的最接近的事情是传递整个证书(SSL\u CLIENT\u CERT),并在指纹到达应用程序后计算指纹 这取决于它的实现方式,应该不会太难做到。例如,如果需要,可以在

我有一个工作的ssl客户端身份验证设置。在将请求转发到其他应用程序时,是否有方法获取客户端证书指纹并将其放入请求头中

根据:

没有什么能比得上:

RequestHeader set SSL_CLIENT_X_FINGERPRINT "%{SSL_CLIENT_X_FINGERPRINT}s" 
谢谢你的帮助


marcel

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

这取决于它的实现方式,应该不会太难做到。例如,如果需要,可以在Java servlet环境中实现一个
过滤器
:对PEM编码的证书进行解码以使其符合顺序,将得到的字节[]数组传递给使用所需算法初始化的
MessageDigest
(并可能对结果进行十六进制编码)

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


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

你好,布鲁诺。谢谢你的回答。你是对的。我们已经创建了自己的CA,并希望一些客户端连接到我们的服务器(使用我们已签署的证书)。握手完成后,只需输入客户端DN并将其与已知客户端列表进行比较即可。我们只希望能够了解连接客户端的情况,并让apache处理ssl终止。这是不同的,如果您有自己的CA,您确实可以将其作为普通PKI使用,并直接使用主题DN。在这种情况下,在apachehttpd配置中最好只接受来自CA(或您信任的有限数量的CA)的证书。