首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从apache获得客户端证书链

问无法从apache获得客户端证书链
EN

Server Fault用户
提问于 2019-09-19 07:26:11
回答 1查看 970关注 0票数 0

我正在尝试将客户端证书链和根从apache获取到我的Java后端。

这是apache配置的相关部分:

代码语言:javascript
复制
  SSLOptions +StdEnvVars +ExportCertData
  RequestHeader set "SSL_CLIENT_CERT" "%{SSL_CLIENT_CERT}e"
  RequestHeader set "SSL_CLIENT_CERT_CHAIN_0" "%{SSL_CLIENT_CERT_CHAIN_0}e"
  RequestHeader set "SSL_CLIENT_ROOT_CERT" "%{SSL_CLIENT_ROOT_CERT}e"

我能够获得客户端证书,但根和中间证书是null。我已经从tcpdump验证了根和中间证书正在发送给apache。

我的apache版本是2.4.6。

我看过类似的问题

如何在使用Apache的证书过程中获得客户端证书链?SSL_客户端_CERT_链未传递给后端服务器

但答案并没有解决我的问题。你知道他们为什么不被通过吗?谢谢。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-09-19 14:50:31

回答我自己的问题以供参考。

之所以没有传递SSL_CLIENT_CERT_CHAIN_0和SSL_CLIENT_ROOT_CERT,是因为它们是从客户端上传的证书中提取出来的。我以为它们是从信任存储中提取出来的,但是看看httpd源代码,我发现它们没有。

httpd调用openssl函数SSL_get_peer_cert_chain()来填充SSL_CLIENT_CERT_CHAIN_n和SSL_CLIENT_ROOT_CERT字段。从openssl https://www.openssl.org/docs/man1.1.0/man3/SSL_到达_同侪_证书_chain.html中,该函数只返回对等方发送的对等链。这就是中间和根被作为null传递的原因,因为在我的例子中,它们是从信任存储而不是从客户端获得的。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/984804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档