Apache是​​否需要了解有关客户端身份validation的中间证书?

我有一个以下的证书层次结构。 我需要在Apache上进行客户端身份validation。

. └── root (CA) - self signed ├── intermediate 1 (CA) | ├── client1 | ├── client2 └── intermediate 2 (CA) ├── client3 └── client4 

谁应该存储中间证书(客户端或服务器)?

我宁愿只在服务器上存储根CA来validation所有的客户端证书。 主要原因是中间CA的列表可以增长,我不希望更新所有存储在Apacheconfiguration中的证书。

这在技术上是可行的吗? SSL协议是否要求客户端发送整个链?

有人想到这个问题。 据我了解,当客户端validation服务器时,服务器将整个链发送到客户端。 我希望它是对称的,当服务器需要validation客户端时,发送整个链是客户端的责任。

当客户端validation服务器时,服务器将发送SSLCertificateChainFile定义的链,这是您作为服务器pipe理员的责任。 所以当客户识别自己的时候,它也负责发送整个链。 Apache只需要知道您在SSLCACertificateFile定义的CA证书。 您可以自行决定在这里定义连锁店,这将使阿帕奇对客户更加宽松,而不是自己发送连锁。

为用户签发证书时,请确保为用户提供了正确的链。 您的用户可以使用以下OpenSSL命令构build.p12:

 openssl pkcs12 -export -in ${SIGNED_CERT} -inkey ${PRIVATE_KEY} \ -name ${USERNAME} -out ${OUTPUT_P12} -certfile ${PROVIDED_CHAIN}