【问题标题】:apache client authentication - set fingerprint of client certificate as header valueapache客户端身份验证-将客户端证书的指纹设置为标头值
【发布时间】:2023-03-24 05:23:01
【问题描述】:

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

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

没有类似的:

RequestHeader set SSL_CLIENT_X_FINGERPRINT "%{SSL_CLIENT_X_FINGERPRINT}s" 

任何帮助表示赞赏

马塞尔

【问题讨论】:

    标签: apache ssl authentication


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 嗨,布鲁诺。感谢您的回答。你说的对。我们创建了自己的 CA,并希望一些客户端连接到我们的服务器(使用我们签署的证书)。握手完成后,客户端 DN 应该足够了,并将其与已知客户端列表进行比较。我们只希望能够了解正在连接的客户端并让 apache 处理 ssl 终止。
    • 那不一样了,如果你有自己的CA,你确实可以把它当作普通的PKI使用,直接使用Subject DN。在这种情况下,最好在 Apache Httpd 配置中仅接受来自您的 CA(或您信任的有限数量的 CA)的证书。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2011-04-09
    • 2013-10-07
    • 2018-10-17
    相关资源
    最近更新 更多