为 CAC 卡身份验证配置 Apache HTTPD 的步骤

Steps for configuring Apache HTTPD for CAC Card Authentication

我接到了让网站使用 CAC 卡身份验证的任务。我已经使用 Apache httpd Web 服务器设置了 AWS Linux 服务器。 是否有人逐步设置 Apache 以启用用户 Web 浏览器读取他们的 CAC 卡并提示他们输入 PIN 码。

CAC认证与其他任何PKI认证(可称为相互认证或客户端认证)没有区别。 这意味着除了浏览器验证服务器证书(检查服务器证书是否由受信任的机构颁发)之外,服务器还将要求客户端提交服务器将验证的证书。

这是您需要的:服务器证书、与该证书一起使用的私钥,以及带有根和中间 ca 证书的信任库。查看此文档以供参考:https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html.

在最简单的设置中,您需要一个看起来像这样的 VirtualHost(我还没有测试过这个配置。只是从上面提到的站点复制它。它可能需要进行调整):

<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
     # server certificate
    SSLCertificateFile "/path/to/www.example.com.cert" 
     # private key
    SSLCertificateKeyFile "/path/to/www.example.com.key" 
    SSLVerifyClient require
    SSLVerifyDepth 1
     # trust store
    SSLCACertificateFile "conf/ssl.crt/ca.crt"
</VirtualHost>

正如我提到的,这是最基本的设置。这可能足以满足您的需要,但要使其更健壮,您需要验证证书未被吊销。执行此操作的两种方法是下载证书吊销列表(这对于颁发 CAC 证书的 CA 的数量来说不切实际),或使用 OSCP 响应程序。我个人没有使用 HTTPD 进行撤销检查(仅在 Java 世界中以编程方式进行),但上述文档中有一节涵盖了 OCSP。同样,根据您的项目,您可能不需要它。