SSLクライアント認証
SSLクライアント認証システムを構築して、メンバー専用ページ等でログインできる対象をクライアント証明書がインポートされたブラウザからのみに限定します。これにより、SSL暗号化+パスワード認証にプラスしてクライアント証明書認証が加わり、例えID・パスワードを 盗聴・解析されてもクライアント証明書のないパソコンからはログインできなくなります。
mod_sslインストール(Webサーバー間の通信を暗号化するためにmod_sslをインストールします)
|
[root@vics1 ~]# yum -y install mod_ssl |
サーバー(セキュリティ)証明書・秘密鍵を作成
|
[root@vics1 ~]# cd /etc/pki/tls/certs/
サーバー証明書の有効期限を10年に変更 [root@vics1 ~]# sed -i 's/365/3650/g' Makefile
[root@vics1 ~]# make server.crt Enter pass phrase: ← サーバー秘密鍵のパスワード(任意)を入力(表示はされません) Verifying - Enter pass phrase: ← パスワード再入力(表示はされません)
Enter pass phrase for sever.key: ← 上のパスワードを入力
Cuntory Name (2 letter code) [GB]:JP ← 国名(JP)入力 State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名入力 Locality Name (eg, city) [Newbury]:Minato ← 市区町村名入力 Organization Name (eg, company) [My Company Ltd]:sample.com ← 組織名(サーバー名で可)入力 Organization Unit Name (eg, section) []: ← 何も入力せず[Enter] Common Name (eg, your name or your server's hostname) []:sample.com ← サーバー名入力 Email Address []:admin@sample.com ← 管理者メールアドレス入力
サーバー秘密鍵からパスワード削除 (これをしないとサーバー起動時にその都度パスワードの入力を求められます) [root@vics1 ~]# openssl rsa -in server.key -out server.key Enter pass phraze for server.key: ← 上のパスワード入力 writing RSA key |
クライアント証明書インポートファイル(PKCS#12形式ファイル)の作成
|
[root@vics1 ~]# cd /etc/pki/tls/certs/
[root@vics1 ~]# openssl pkcs12 -export -clcerts -inkey server.key -in server.crt -out vic_client.p12 (最後の「vic_client.p12」の「vic_client」の部分はファイル名ですので適当に変えてください)
|
これで「vic_client.p12」が作成されます。このファイルを使ってクライアント証明書をインポートしますのでFTP等でWindowsPCに移動しておきます。
SSLの設定
|
[root@vics1 ~]# vi /etc/httpd/conf.d/ssl.conf
DocumentRoot "/home/vic/html/member" ← 認証用サイトのディレクトリを指定 ServerName vicsfactory.com:443 ← ドメイン名とSSLで使うポートを指定
「SSLCertificateFile」・「SSLCertificatekeyFile」・「SSLCACertificateFile」・「SSLVerifyClient require」 の記述部分を探して以下の通り修正 SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificatekeyFile /etc/pki/tls/certs/server.key SSLCACertificateFile /etc/pki/tls/certs/server.crt SSLVerifyClient require ← #オフ
SSL設定の反映 [root@vics1 ~]# /etc/rc.d/init.d/httpd reload |
※以上でSSLの設定は完了です。ルーターでTCP:443番をサーバーに振るように設定してください。
BASIC認証用ユーザ・パスワードの登録
ユーザーの登録(vic)[root@vics1 ~]# htpasswd -b -c /etc/httpd/conf/.htpasswd vic パスワード.htaccessファイルの作成(各ユーザ専用フォルダ用)例:vic [root@vics1 ~]# vi /home/vic/html/member/.htaccess SSLRequireSSL AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /dev/null AuthName "Secret Page" AuthType Basic Require valid-user |
以上でSSLクライアント認証システムの設定は完了です。
WindowsPCにクライアント証明書をインポート
●Windows7の場合
1.「vic_client.p12」をダブルクリック
2.「証明書のインポートウィザード」→そのまま「次へ」
3.「インポートする証明書ファイル」→そのまま「次へ」
4.「パスワード」→パスワードを入力して「次へ」
5.「証明書ストア」→そのまま「次へ」
6.「証明書のインポートウィザードの完了」→「完了」
7.「新しい秘密交換キーをインポートします」→「OK」
8.「正しくインポートされました」→「OK」
以上で証明書のインポートは完了です。
会員サイトの表示
1.ブラウザを起動し、アドレス欄にLAN内の場合は「https://192.168.1.100(サーバーのプライベートIP)/member/」を入力
2.「Windowsセキュリティ画面」で先ほどインポートした証明書を選択して「OK」
3.「キーを使用するためのアクセス許可の要求」画面で「アクセス許可の付与」を選択して「OK」
4.「セキュリティの警告」で「はい」
5.ユーザー名・パスワードを入力して「OK」
以上でssl.confで設定したメンバーページが表示されます。あとは許可するメンバーのパソコンに「vic_client.p12」を使ってクライアント証明書をインポートしてください。(インポートが完了したら「vic_client.p12」は必ず削除してください)
※クライアント証明書インポートファイル(vic_client.p12)は外部に流出しないように厳重に管理してください。