20.10. TLS クライアント証明書認証の設定
クライアント証明書認証を使用すると、管理者は、証明書を使用して認証したユーザーだけが Web サーバー my_company.idm.example.com のリソースにアクセスできるようにすることが可能です。/var/www/html/Example/
ディレクトリーにクライアント証明書認証を設定できます。
Apache サーバー my_company.idm.example.com が TLS 1.3 プロトコルを使用する場合は、一部のクライアントに追加の設定が必要です。たとえば、Firefox で、about:config
メニューの security.tls.enable_post_handshake_auth
パラメーターを true
に設定します。詳細は、Transport Layer Security version 1.3 in Red Hat Enterprise Linux 8 を参照してください。
前提条件
- TLS 暗号化は、Apache HTTP Server への TLS 暗号化の追加 で説明されているように、my_company.idm.example.com サーバーで有効になっています。
手順
/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
ユーティリティーを使用して、クライアント認証なしで URLhttps://my_company.idm.example.com/Example/
にアクセスします。$ 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
このエラーから、Web サーバー my_company.idm.example.com にクライアント証明書認証が必要であることが分かります。
クライアントの秘密鍵と証明書、および 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
ファイルを表示します。