Apache + mkcertでクライアント(証明書)認証を試行する

環境

手順

mkcert(CA)をインストールする

$ brew install mkcert
$ mkcert -install
$ ls "`mkcert -CAROOT`"
rootCA-key.pem  rootCA.pem

クライアント認証を要求するように設定する

  • CA証明書をWebサーバーに配置する。
  • Apacheに設定を追加する。
$ sudo vi /path/to/ssl.conf
<VirtualHost *:443>
…略

SSLCACertificateFile /etc/pki/tls/certs/rootCA.pem
SSLVerifyClient require
</VirtualHost>

$ sudo systemctl restart httpd

クライアント証明書をキーチェーンに登録する

  • 証明書を発行する。
$ mkcert -client foo

Created a new certificate valid for the following names 📜
 - "foo"

The certificate is at "./foo-client.pem" and the key at "./foo-client-key.pem" ✅

It will expire on 22 July 2024 🗓

$ openssl pkcs12 -export -inkey foo-client-key.pem -in foo-client.pem -out foo-client.pfx
  • 証明書(foo-client.pfx)を開いて、キーチェーンに登録する。
  • キーチェーンに登録された証明書のコンテキストメニューから、"情報を見る"を選択し、"この証明書を使用するとき"を"常に信頼"するに変更する。
  • キーチェーンに登録された証明書のコンテキストメニューから、"新規識別プリファレンス"を選択し、対象のURLを入力する。

当該URLにアクセスする

ブラウザにて当該URLにアクセスできればOK。

参考