为 CAC 卡身份验证配置 Apache HTTPD 的步骤
Posted
技术标签:
【中文标题】为 CAC 卡身份验证配置 Apache HTTPD 的步骤【英文标题】:Steps for configuring Apache HTTPD for CAC Card Authentication 【发布时间】:2018-03-27 09:08:03 【问题描述】:我被分配了使网站使用 CAC 卡身份验证的任务。我已经使用 Apache httpd Web 服务器设置了 AWS Linux 服务器。 有没有人一步一步设置 Apache 以使用户的网络浏览器读取他们的 CAC 卡并提示他们输入密码。
【问题讨论】:
您需要设置“基于证书的身份验证”。用户端需要的只是 DoD 根证书和软件附带的 CAC 阅读器。 【参考方案1】: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。同样,根据您的项目,您可能不需要它。
【讨论】:
以上是关于为 CAC 卡身份验证配置 Apache HTTPD 的步骤的主要内容,如果未能解决你的问题,请参考以下文章
使用 Vaadin 应用程序的通用访问卡 (CAC) 身份验证
如何在 Node/Express 中使用 CAC 对用户进行身份验证