CentOS6 の apache でSSL暗号化通信を行う https でアクセスする為の設定です。
作業のほとんどは、サーバ証明書の作成です。
以下作業は root で行ってください。
必要パッケージインストール
必要なパッケージをインストールします。
yum install httpd yum install mod_ssl yum install openssl
サーバ用秘密鍵(server.key)の作成
下記を実行します。
cd /etc/pki/tls/certs/ make server.key
実行すると、パスフレーズを要求されますので、秘密鍵を暗号化する為のパスフレーズを入力します。
パスフレーズは空には出来ませんので、4文字以上でパスフレーズを入力して下さい。
パスフレーズ入力後、もう一度確認の為、入力を求められるので、再度入力して下さい。
なお、make server.key で
openssl genrsa -aes128 2048 > server.key
が実行されます。
2048ビット長のRSA 秘密鍵を生成し、AES 128bitで暗号化して server.key を出力します。
出力された server.key がサーバ用秘密鍵です。
次に、サーバ用秘密鍵(server.key)からパスフレーズを削除します。
server.keyの作成時に入力したパスフレーズを要求されるので、入力します。
サーバ用秘密鍵(server.key)からパスフレーズを削除したものが生成されます。
openssl rsa -in server.key -out server.key
パスフレーズを削除するのは、後ほど apache の設定で server.key を指定する為です。
パスフレーズを削除しておかないと、apache の起動時に server.key のパスフレーズの入力を要求するようになり、apache を自動起動できなくなります。
但し、サーバ用秘密鍵(server.key)は上記の make server.key 実行で生成時に AES 128bit でパスフレーズにより暗号化されています。パスフレーズの削除は、秘密鍵自身の暗号化の解除を意味します。
apache の起動時にパスフレーズの入力を行っても良い場合は、上記の手順は不要です。
署名要求ファイル(server.csr)の作成
署名要求ファイル(server.csr)を作成します。
make server.csr
実行後、以下のように入力します。赤字のように入力して下さい。
Country Name (2 letter code) [GB]:JP State or Province Name (full name) [Berkshire]:Enterキー Locality Name (eg, city) [Newbury]:Enterキー Organization Name (eg, company) [My Company Ltd]:Enterキー Organizational Unit Name (eg, section) []:Enterキー Common Name (eg, your name or your server's hostname) []:サーバ名のFQDN Email Address []:Enterキー Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:Enterキー An optional company name []:Enterキー
Common Name でサーバ名を必ずFQDNで入れて下さい。
FQDN で入力しておかないと、このサーバを将来的に Windows から利用する際に不都合が生じます。
この後の手順で生成するサーバ証明書(server.crt)は、Windowsのインターネットエクスプローラで証明書インポート出来ますが、その際に不正な証明書として扱われてしまいます。
自己署名したサーバ証明書(server.crt)の作成
自己署名したサーバ証明書(server.crt)を作成します。
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
このサーバ証明書の有効期限は現在時刻から、-days で指定した日数経過までとなります。
アクセス権を設定します。
chmod 400 server.*
apacheの設定
apacheの設定ファイルで、作成したサーバ証明書(server.crt)とサーバ用秘密鍵(server.key)を指定します。
/etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/certs/server.key
apache を再起動して完了です。
/etc/init.d/httpd restart
以上で、サーバに対して https でアクセスが可能となります。
参考
CentOS 6 – SSL証明書を作成する : Server World
UNIXの部屋 コマンド検索:openssl (*BSD/Linux)
OpenSSL – BugbearR’s Wiki
OpenSSLコマンドの使い方
OpenSSL: Documents, openssl(1)
OpenSSL: Documents, rsa(1)
OpenSSL: Documents, x509(1)
Apache2-SSLを有効にするには
コメント