yum install httpd mod_ssl
次に、証明書の準備
ここでは、オレオレ証明書で準備(-daysを3650日の10年にセット)
openssl genrsa 2048 > /etc/httpd/conf/server.key openssl req -new -key /etc/httpd/conf/server.key -subj "/C=JP/ST=Tokyo/L=my city/O=my company/CN="`hostname` > /etc/httpd/conf/server.csr openssl x509 -days 3650 -req -signkey /etc/httpd/conf/server.key < /etc/httpd/conf/server.csr > /etc/httpd/conf/server.crt
そして、クライアント証明書の検証のため
を発行したCA局の公開鍵を/etc/httpd/conf/cacert.pemに設置
デフォルトで用意される/etc/httpd/conf.d/ssl.confには色々と長ったらしく書かれているけれど
次の内容で置き換え
とりあえず、ここでは
SSL_CLIENT_S_DN_CN
の値を用いて、これがUser1かUser2の場合のみアクセスを許可するという設定
他に利用できる値は
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html
を参照
Listen 443 https SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtinLogFormat "%h %l %{SSL_CLIENT_S_DN_CN}x %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" ssl_access ErrorLog logs/ssl_error_log CustomLog logs/ssl_access_log ssl_access LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/httpd/conf/server.crt SSLCertificateKeyFile /etc/httpd/conf/server.key SSLCACertificateFile /etc/httpd/conf/cacert.pem SSLVerifyClient require SSLVerifyDepth 10 SSLRequire %{SSL_CLIENT_S_DN_CN} in {\ "User1",\ "User2"\ } BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
ここまで設定したらhttpdを起動してとりあえずクライアント証明書がインストールされたブラウザでアクセスしてみる
service httpd startすると、利用するクライアント証明書を聞かれるので選択
これで/var/log/httpd/ssl_access_logにSSL_CLIENT_S_DN_CNの値が出力されるので
適宜SSLRequireのところの許可リストをいじってあげればOK
0 件のコメント:
コメントを投稿