SSL クライアント認証を試してみる
Web サーバへのアクセス制限をするために、 SSL クライアント認証を試してみた。
その時調べた内容や、動作確認をした時の内容などをまとめてみました。
SSL クライアント認証とは
SSL クライアント証明書を利用して、クライアントを認証する方法です。
SSL クライアント証明書を持っているクライアントしか利用できないため、セキュアと言えます。
SSL クライアント証明を理解するために参考になったページ
利用方法
SSL クライアント認証を利用するには
- クライアント証明書
- Web サーバの設定
が必要です。
今回は上記内容に加えて
も利用しました。
プライベート認証局
認証局がないと証明書を発行できないため、はじめに認証局を作成します。
プライベート認証局の証明書、サーバー証明書、クライアント証明書の作成方法について | レンタルサーバー・自宅サーバー設定・構築のヒント
を参考に作成しました。
サーバ証明書、クライアント証明書
こちらも
プライベート認証局の証明書、サーバー証明書、クライアント証明書の作成方法について | レンタルサーバー・自宅サーバー設定・構築のヒント
を参考に作成しました。
Web サーバの設定
今回 Web サーバは nginx を利用しました。
以下のリンクを参考に conf ファイルを作成しました。
(conf ファイルはしっかり調べてないので、ベストな設定ではないかも・・・)
ssl.conf
server { listen 443 ssl; server_name www.example.com; ssl_certificate /etc/pki/CA/certs/www.example.com.crt; ssl_certificate_key /etc/pki/CA/private/www.example.com.key; ssl_verify_client on; ssl_client_certificate /etc/pki/CA/cacert.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; location / { root /usr/share/nginx/html; index index.html index.htm; } }
この ssl.conf を /etc/nginx/conf.d/
に配置し、 nginx を再起動
$ ls /etc/nginx/conf.d/ default.conf ssl.conf $ sudo /etc/init.d/nginx start
デモ
Web サーバにリクエストすると、サーバから証明書を求められる
適切な証明書を選択すると、 nginx の welcome ページが表示される
証明書を渡さないと、エラーページに遷移される
(基本参考のリンクばかりになってしまったw)