22.10. 配置 TLS 客户端证书身份验证
客户端证书身份验证可让管理员只允许使用证书进行身份验证的用户访问 my_company.idm.example.com Web 服务器上的资源。您可以为 /var/www/html/Example/
目录配置客户端证书身份验证。
如果 my_company.idm.example.com Apache 服务器使用 TLS 1.3 协议,则某些客户端需要额外的配置。例如,在 Firefox 中,将about:config
菜单中的security.tls.enable_post_handshake_auth
参数设置为true
。详情请查看 Red Hat Enterprise Linux 8中的传输层安全版本1.3。
先决条件
- 在 my_company.idm.example.com 服务器上启用了 TLS 加密,如 向 Apache HTTP 服务器 添加 TLS 加密 中所述。
步骤
编辑
/etc/httpd/conf/httpd.conf
文件,并将以下设置添加到你要为其配置客户端验证的<VirtualHost>
指令中:<Directory "/var/www/html/Example/"> SSLVerifyClient require </Directory>
SSLVerifyClient require
设置定义了服务器必须成功验证客户端证书,然后客户端才能访问/var/www/html/Example/
目录中的内容。重启
httpd
服务:# systemctl restart httpd
验证
使用
curl
在没有客户端身份验证的情况下访问https://my_company.idm.example.com/Example/
URL:$ curl https://my_company.idm.example.com/Example/ curl: (56) OpenSSL SSL_read: error:1409445C:SSL routines:ssl3_read_bytes:tlsv13 alert certificate required, errno 0
这个错误表示 my_company.idm.example.com web 服务器需要客户端证书身份验证。
将客户端私钥和证书以及 CA 证书传递给
curl
以便使用客户端身份验证来访问相同的URL:$ curl --cacert ca.crt --key client.key --cert client.crt https://my_company.idm.example.com/Example/
如果请求成功,
curl
会显示存储在/var/www/html/Example/
目录中的index.html
文件。