mod_sslインストール
yum install -y mod_ssl
privateディレクトリに移動。このディレクトリにcsr(証明書署名要求)、key(秘密鍵)を作る。
※ディレクトリはここではなくてはならないというわけではない。使用する証明書をconfファイルで指定する際のパスを適宜変えればいい。
cd /etc/pki/tls/private
秘密鍵を作る
openssl genrsa -des3 -out hoge.key 2048
オプション名 | 役割 |
---|---|
genrsa | 秘密鍵を生成 |
-des3 | 暗号化アルゴリズム |
-out | 書き出されるファイル |
2048 | 2048bitで暗号化 |
CSRを作る
openssl req -new -sha256 -key hoge.key -out hoge.csr
オプション名 | 役割 |
---|---|
req | 証明書要求 |
-new | 新しい証明書要求を生成 |
-sha256 | 256bitで暗号化 |
-key | で読み込む秘密鍵を指定 |
-out | 作成される証明書のファイル名を指定 |
CSR作成コマンド実行後、秘密鍵のパスフレーズの入力を求められる。
その後、ディスティングイッシュネーム情報を求められる。
ディスティングイッシュネーム情報とは
CSRに含まれる、サイトやサイト運営団体に関わる情報
Country (国名)
例)JP
State(都道府県名)
例)Kanagawa
Locality(市区町村名)
例)Yokohama
Organizational Name(組織名)
例)example Inc.
Organizational Unit (部門名) ※「空のまま」でも大丈夫
例)(空)
Common Name(コモンネーム)
例)example.co.jp
Email Address(メールアドレス)
例)hoge@example.co.jp
以下2つは「空のまま」で大丈夫
任意:A challenge password (パスワードを設定するとApacheの起動時に毎回パスワードを求められる。)
任意:An optional company name(会社名の略称)
CSRの内容を確認する
ディスティングイッシュネーム情報の誤入力がないか確認する
https://sstool.cybertrust.ne.jp/support_tool/index02.php
認証局にログインし、更新申し込み
- CSRの貼り付け
認証局から証明書、中間証明書を取得
- 証明書(crt) ・・・ SSL証明書会社が証明書署名要求(csr)に情報を付加して秘密鍵で暗号化したもの。
- 中間証明書(cer) ・・・ SSL証明書会社がセキュリティ強化、トラブル時の被害を最小限に抑えるために発行するもの。
サーバーに設置
ファイルを保存
「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」までも必要。
-----BEGIN CERTIFICATE----- // ココから
hogehoge...
-----END CERTIFICATE----- // ココまで
※ディレクトリはここではなくてはならないというわけではない。使用する証明書をconfファイルで指定する際のパスを適宜変えればいい。
vim /etc/pki/tls/certs/hoge.crt
vim /etc/pki/tls/certs/hoge.cer
ファイルに不備がないか確認する
Issuer :証明書署名要求(csr)に署名した者
Subject:証明されたいサーバの情報
Validity:証明書の有効期間
// 証明書
openssl x509 -noout -text -in /etc/pki/tls/certs/hoge.crt
// 中間証明書
openssl x509 -noout -text -in /etc/pki/tls/certs/hoge.cer
証明書と秘密鍵の整合性を確認する
実行後、「(stdin)=」の値に差異がないか
// 証明書
openssl x509 -noout -pubkey -in /etc/pki/tls/certs/hoge.crt | openssl sha1
// 秘密鍵
openssl rsa -pubout -in /etc/pki/tls/private/hoge.key | openssl sha1
ssl.confを修正
vim etc/httpd/conf.d/ssl.conf
証明書、秘密鍵、中間証明書を追加
SSLCertificateFile /etc/pki/tls/certs/hoge.crt
SSLCertificateKeyFile /etc/pki/tls/private/hoge.key
SSLCertificateChainFile /etc/pki/tls/certs/hoge.cer
※注意点
1.デフォルトではssl.confを参照するように設定されているが、設定を変更していた場合、上記設定をしても無意味なので参照先をコマンドで確認する
httpd -S
(例)参照先がexample.co.jp.confに変更されている
httpd -S コマンド実行結果
*:443 is a NameVirtualHost
default server example.co.jp.localdomain (/etc/httpd/conf.d/ssl.conf:56)
port 443 namevhost example.co.jp (/etc/httpd/conf.d/example.co.jp.conf:18)
2.Apache2.4.8以降はSSLCertificateChainFileが廃止されたので証明書と中間証明書を結合したcrtファイルを作成し、該当するconfファイルの「SSLCertificateFile」に設置する
-----BEGIN CERTIFICATE----- // 証明書(crt)
hogehoge...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- // 中間証明書(cer)
hogehoge...
-----END CERTIFICATE-----
SSLCertificateFile /etc/pki/tls/certs/hoge.crt
設定ファイルのチェックを行う
「syntax OK」とでればOK
※サーバーによってコマンドは異なる
service httpd configtest
サーバー再起動
※サーバーによってコマンドは異なる
service httpd graceful
ブラウザから証明書が更新されているか確認する
URLバー付近の鍵マーク→項目「証明書」→証明書を確認
反省
SSL証明書を更新する際にサーバー設定を変更しても反映されない場合は、作業しているサーバーがあっているか確認してみる。
サーバー移行しているかもしれない・・・
dig example.co.jp