■設定環境
WEBサーバのFQDN:www.ys-network.info
秘密鍵の鍵長 :2048bit
秘密鍵ファイル(KEYファイル) :/etc/pki/tls/private/
SSLサーバー証明書の署名要求ファイル(CSRファイル):/etc/pki/tls/
SSLサーバ証明書(CRTファイル):/etc/pki/tls/certs/
■概要
1. httpd、mod_sslのインストール
2. 秘密鍵の作成
2.1 乱数ファイルの作成
2.2 秘密鍵の作成
3. SSLサーバー証明書を発行するための署名要求(Certificate Signing Request)の作成
4. 自己署名証明書の発行
5. “ssl.conf”の設定
6. httpdサービスの再起動
番外編1
番外編2
番外編3
1. httpd、mod_sslのインストール
構築に必要なパッケージをインストールします
# yum install httpd mod_ssl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
~~~ 省略 ~~~
Dependencies Resolved
====================================================================================
Package Arch Version Repository Size
====================================================================================
Installing:
httpd x86_64 2.2.15-15.el6.centos.1 updates 813 k
mod_ssl x86_64 1:2.2.15-15.el6.centos.1 updates 87 k
Installing for dependencies:
apr x86_64 1.3.9-3.el6_1.2 base 123 k
apr-util x86_64 1.3.9-3.el6_0.1 base 87 k
apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15 k
httpd-tools x86_64 2.2.15-15.el6.centos.1 updates 70 k
mailcap noarch 2.1.31-2.el6 base 27 k
Transaction Summary
====================================================================================
Install 7 Package(s)
~~~ 省略 ~~~
Complete!
2. 秘密鍵の作成
事前準備として、作業ディレクトリに移動します。
# cd /etc/pki/tls/
2.1 乱数ファイルの作成
適当なディレクトリ内のファイルから乱数ファイルを作成します。 ここでは、"/var/log/"ディレクトリ内にあるmessages*ログファイルから乱数ファイルを作成してますが 同じものが存在しづらければ、なんだって良いと思います。 # openssl md5 /var/log/messages* > rand.dat # 先ほど作成した乱数ファイル(rand.dat)ですが、中身はこんな感じになってます。 # cat rand.dat MD5(/var/log/messages)= 29ef225a57ceae83973ee75ec03e95da MD5(/var/log/messages-20120325)= d3325291b02e54a79fb38795246a6738 MD5(/var/log/messages-20120401)= 463f677870214b32a36b2ba5b8b62492
2.2 秘密鍵の作成
先ほど作成した乱数ファイルを元にして、秘密鍵を作成します。
# openssl genrsa -rand rand.dat -des3 2048 > /etc/pki/tls/private/www.ys-network.info.key
189 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
........................+++
...................................+++
e is 65537 (0x10001)
Enter pass phrase:適当なパスワードを入力
Verifying - Enter pass phrase:適当なパスワードを再入力
3. SSLサーバー証明書を発行するための署名要求(Certificate Signing Request)の作成
認証局(ベリサイン、サイバートラスト等)に送付するCSRファイルを作成します。 # openssl req -new -key /etc/pki/tls/private/www.ys-network.info.key -out www.ys-network.info.csr Enter pass phrase for www.ys-network.info.key:秘密鍵のパスワードを入力 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- #国名を入力します。例:日本 Country Name (2 letter code) [XX]:JP #都道府県を入力します。例:東京 State or Province Name (full name) []:Tokyo #市町村を入力します。例:千代田区 Locality Name (eg, city) [Default City]:Chiyoda-ku #会社名を入力します。 Organization Name (eg, company) [Default Company Ltd]:ys-network.info.co.,LTD #部署名を入力します。 Organizational Unit Name (eg, section) []:www.ys-network.info #最重要項目ですが、サーバのFQDNを入力します。 Common Name (eg, your name or your server's hostname) []:www.ys-network.info #メールアドレスを入力します。空でOK Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request #パスワードを入力します。空でOK A challenge password []: #パスワードを再入力します。空でOK An optional company name []:
以上で、認証局に送付するCSRファイルが作成されました。
その後、認証局から届いたSSLサーバ証明書(CRTファイル)を”/etc/pki/tls/certs/”ディレクトリに保存したら
5. “ssl.conf”の設定の手順で大丈夫ですが、自宅サーバなど費用の問題で自己認証局を使用して発行する場合
4. 自己署名証明書の発行の手順が必要です。
4. 自己署名証明書の発行
10年間有効の自己署名証明書(CRTファイル)を発行します。
# openssl req -x509 -in www.ys-network.info.csr -key /etc/pki/tls/private/www.ys-network.info.key -out /etc/pki/tls/certs/www.ys-network.info.crt -days 3650
Enter pass phrase for /etc/pki/tls/private/www.ys-network.info.key:秘密鍵のパスワードを入力
#
5. “ssl.conf”の設定
秘密鍵やSSLサーバ証明書を指定します。 # vi /etc/httpd/conf.d/ssl.conf 修正前 SSLCertificateFile /etc/pki/tls/certs/localhost.crt 修正後 SSLCertificateFile /etc/pki/tls/certs/www.ys-network.info.crt 修正前 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 修正後 SSLCertificateKeyFile /etc/pki/tls/private/www.ys-network.info.key 認証局が発行したSSLサーバ証明書を使用した場合、中間CA証明書とクロスルート証明書の設定が必要です。 ベリサインの場合、各証明書はここにあります 修正前 #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt 修正後 SSLCertificateChainFile /etc/pki/tls/certs/www.ys-network.info-chain.crt
6. httpdサービスの再起動
上記設定の変更を反映させるためにhttpdサービスを再起動します
# /etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
番外編1
このままだと、httpdサービスを再起動する度に秘密鍵のパスワードを求められますが
以下を行えばパスワードを求められなくなります。セキュリティ上望ましくはありませんが・・・
# openssl rsa -in /etc/pki/tls/private/www.ys-network.info.key -out /etc/pki/tls/private/www.ys-network.info-nopass.key
Enter pass phrase for /etc/pki/tls/private/example.key:秘密鍵のパスワードを入力
writing RSA key
番外編2
httpdサービスを再起動すると、サービスは起動するけど以下のようなエラーが出る場合があります。 # /etc/rc.d/init.d/httpd restart httpd を停止中: [OK] httpd を起動中: httpd: apr_sockaddr_info_get() failed for www.ys-network.info httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ] 上記は、httpd.confの"ServerName"が未入力の為です。 # vi /etc/httpd/conf/httpd.conf 修正前 #ServerName www.example.com:80 修正後 ServerName www.ys-network.info:80
番外編3
ブラウザがFirefoxの場合、自己署名証明書のSSLサイトにアクセスしてエラーが出ても例外サイトに追加すると
次からはエラーが表示されなくなりますが、何かしらの理由で再表示するようにするには以下の通りです。
メニューバーの[ツール]→[オプション]で設定ウインドウを表示し、[詳細]の[暗号化]タブ内の
[証明書を表示]ボタンをクリックすると、証明書一覧があるので、[サーバ証明書]から該当する証明書を削除し
ブラウザを再起動すると、エラーが表示されるようになります。
================================
検証環境
OS:CentOS6.2(64bit)
apache:httpd-2.2.15-15.el6.centos.1.x86_64
mod_ssl:mod_ssl-2.2.15-15.el6.centos.1.x86_64
DSAとRSA・・・暗号方式の違い。今は暗号強度が高いRSAが主流。
CSR(Certificate Signing Request)・・・認証局にSSLサーバー証明書を発行してもらうのに必要
CRT・・・上記CSRファイルを元に、認証局が送ってくるファイル。SSLサーバ証明書
コメント
[…] サーバの自己証明書作成 […]