28.9. TLS クライアント証明書認証の設定
認証されたユーザーのみがウェブサーバー上のリソースにアクセスできるようにするには、/var/www/html/Example/ ディレクトリーに対してクライアント証明書認証を設定します。
Apache HTTP サーバーが Transport Layer Security (TLS)1.3 プロトコルを使用する場合、一部のクライアントでは追加の設定が必要になります。たとえば、Mozilla Firefox では、about:config メニューで security.tls.enable_post_handshake_auth パラメーターを true に設定します。
前提条件
- サーバーで TLS 暗号化を有効にしました。
手順
クライアント認証を設定するには、
/etc/httpd/conf/httpd.conf ファイルを編集します。<Directory "/var/www/html/Example/"> SSLVerifyClient require </Directory>SSLVerifyClient の require設定は、クライアントが/var/www/html/Example/ディレクトリー内のコンテンツにアクセスする前に、クライアント証明書を要求するようにサーバーを設定します。httpdサービスを再起動します。# systemctl restart httpd
検証
クライアント認証なしで
https://example.com/Example/のURL にアクセスする:$ curl \https://example.com/Example/curl: (56) OpenSSL SSL_read: error:1409445C:SSL routines:ssl3_read_bytes:tlsv13 alert certificate required, errno 0このエラーは、Web サーバーにクライアント証明書認証が必要であることを示しています。
クライアントの秘密鍵と証明書、および CA 証明書を渡すことで、クライアント認証を使用して同じ URL にアクセスします。
$ curl --cacert ca.crt --key client.key --cert client.crt https://example.com/Example/リクエストが成功すると、
curlユーティリティーは/var/www/html/Example/ディレクトリーに保存されているindex.htmlファイルを表示します。