20.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

先决条件

流程

  1. 编辑 /etc/httpd/conf/httpd.conf 文件,并将以下设置添加到要为其配置客户端验证的 <VirtualHost> 指令中

    <Directory "/var/www/html/Example/">
      SSLVerifyClient require
    </Directory>

    SSLVerifyClient require 设置定义服务器必须成功验证客户端证书,然后客户端才能访问 /var/www/html/Example/ 目录中的内容。

  2. 重启 httpd 服务:

    # systemctl restart httpd

验证步骤

  1. 使用 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 服务器需要客户端证书身份验证。

  2. 将客户端私钥和证书以及 CA 证书传递给 curl 以访问与客户端身份验证相同的 URL:

    $ curl --cacert ca.crt --key client.key --cert client.crt https://my_company.idm.example.com/Example/

    如果请求成功,c url 会显示存储在 /var/www/html/Example/ 目录中的 index.html 文件