メモ > サーバ > 構築: Webサーバ設定 > Apache+SSL(有料証明書を更新する場合)
Apache+SSL(有料証明書を更新する場合)
※秘密鍵は同じものを使えるが、毎回違うものを使うほうがセキュリティ上好ましい
※万が一問題が発生しても戻せるように、以前の秘密鍵や証明書は削除せずに置いておく
CSRについて教えてください。
https://jp.globalsign.com/support/faq/65.html
■秘密鍵の生成
# cd /etc/httpd/conf/ … ディレクトリ移動
# openssl genrsa -des3 -out ssl.key/refirio.net.20160130.key 2048 … 秘密鍵を生成
Generating RSA private key, 2048 bit long modulus
....+++
......+++
e is 65537 (0x10001)
Enter pass phrase for ssl.key/refirio.net.20160130.key: … 任意のパスワードを設定(表示はされない)
Verifying - Enter pass phrase for ssl.key/refirio.net.20160130.key: … 任意のパスワードを確認(表示はされない)
■CSRの生成
※新規導入の時と同じ内容でいい
# openssl req -new -key ssl.key/refirio.net.20160130.key -out ssl.csr/refirio.net.20160130.csr … CSRを生成
Enter pass phrase for ssl.key/refirio.net.20160130.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) []:Osaka … 都道府県名を設定
Locality Name (eg, city) [Default City]:Osaka … 市区町村名を設定
Organization Name (eg, company) [Default Company Ltd]:refirio.net … 組織名を設定(なんでもいい)
Organizational Unit Name (eg, section) []: … 空Enter(もしくは部署名を設定)
Common Name (eg, your name or your server's hostname) []:refirio.net … コモンネーム(Webサーバー名)を設定。SSL購入時に申請するものと一致させる
Email Address []:refirio@example.com … 管理者メールアドレスを設定
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: … 空Enter
An optional company name []: … 空Enter
■秘密鍵からパスワードを削除
# openssl rsa -in ssl.key/refirio.net.20160130.key -out ssl.key/refirio.net.20160130.key … サーバ用秘密鍵からパスワード削除(Webサーバ起動時にパスワードを要求されないように)
Enter pass phrase for refirio.net.20160130.key: … サーバ用秘密鍵・証明書作成時のパスワードを入力(表示はされない)
writing RSA key
# vi .ssl.csr/refirio.net.20160130.csr … CSRの内容を確認
■証明書申し込み(ドメインキーパーでメール認証の例)
新規に購入してもいいが、更新した方が得かも。手続きもスムーズ
以下はドメインキーパーで更新したときの手順メモ
ドメインキーパー https://www.domain-keeper.net/usr/ssl/ にログイン
→「ご利用中の証明書一覧」をクリック
→対象の「更新」をクリック
→更新手続き内容を確認して「更新手続きに進む」をクリック
→取得年数などを確認して「次へ進む」をクリック
→オプションサービスを確認して「次へ進む」をクリック
→CSRを入力して「次へ進む」をクリック
→CSRの内容を確認して「次へ進む」をクリック
→認証方法で「メール認証」の「refirio@example.com」を選択して「次へ進む」をクリック
→申請情報を確認して「次へ進む」をクリック
→申し込み内容を確認して「次へ進む」をクリック
→引き続き決済を行う
■証明書申し込み(グローバルサインでページ認証の例)
新規に購入してもいいが、更新した方が得かも。手続きもスムーズ
以下はドメインキーパーで更新したときの手順メモ
グローバルサイン https://system.globalsign.com/loginpartner/loginpartner.do にログイン
→「現在更新可能な証明書」をクリック
→対象の「更新」をクリック
→サービス内容を選択して「次へ」をクリック
→技術担当者情報を入力して「次へ」をクリック
→CSRを入力して「次へ」をクリック
→CSR内容を確認して「次へ」をクリック
→認証方法で「ページ認証」を選択して「次へ」をクリック
→支払い方法で「クレジットカード」を選択して「次へ」をクリック
→申込内容を確認して「完了する」をクリック
以下のように表示されているので、該当サーバにファイルを設置する
-----BEGIN CERTIFICATE REQUEST-----
MIICxjCCAa4CAQAwgYAxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIDAVPc2FrYTEVMBMG
〜省略〜
bzhh/X0SHFCYaHAHIJYLUx2Ii3265wENEwdsteXVps8zTyuKw6jZaq/1
-----END CERTIFICATE REQUEST-----
オーダーIDは、CEDO123456789012です。
GSパネルにログイン後、「証明書一覧」より現在のステータス等、詳細な情報をご確認いただけます。
<meta name="_globalsign-domain-verification" content="XXXXXXXXXXXXXXXXXXXXXXX-YY_ZZZZZZZZZZZZZZZ" />
上記、ドメイン審査コードを、下記のページのgsdv.txtにテキストファイルとして設置してください。
yourdomain.com/.well-known/pki-validation/gsdv.txt
→「グローバルサイン/承認手続きのお知らせ」というメールが送られてくるはずなので、メールの案内に従って該当ページにアクセスし、承認手続きを行う
もしくはGlobalSignで
「証明書一覧 → 編集 → メール送信一覧」
から、送信されたメールを確認できる(承認リンクや証明書なども確認できる)
■証明書インストール
※AWSでロードバランサに証明書を設定する場合の手順は aws.txt を参照
# vi /etc/httpd/conf/ssl.crt/refirio.net.20160130.crt … 証明書用のファイルを作成
※万が一問題が発生しても戻せるように、削除ではなくコメントアウトにする
-----BEGIN CERTIFICATE----- … 証明書の内容を全てコピーして貼り付ける
MIIE4DCCA8igAwIBAgISESFyQfmhMxTM6H2txGeH/YImMA0GCSqGSI
〜略〜
TlmDVg==
-----END CERTIFICATE-----
# vi /etc/httpd/conf/ssl.crt/refirio.net.20160130.ca … 中間証明書用のファイルを作成
-----BEGIN CERTIFICATE----- … 中間証明書の内容を全てコピーして貼り付ける
MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQ
〜略〜
EjxS1QSCVS1npd+3lXzuP8MIugS+wEY=
-----END CERTIFICATE-----
# vi /etc/httpd/conf.d/ssl.conf … ApacheSSL設定ファイル編集(バーチャルホストを指定していない場合)
# vi /etc/httpd/conf.d/virtualhost.conf … バーチャルホスト設定ファイル編集(バーチャルホストを指定している場合)
#SSLCertificateFile /etc/httpd/conf/ssl.crt/refirio.net.crt
#SSLCertificateKeyFile /etc/httpd/conf/ssl.key/refirio.net.key
#SSLCertificateChainFile /etc/httpd/conf/ssl.crt/refirio.net.ca
SSLCertificateFile /etc/httpd/conf/ssl.crt/refirio.net.20160130.crt … 証明書用の設定を編集
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/refirio.net.20160130.key … 秘密鍵用の設定を編集
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/refirio.net.20160130.ca … 中間証明書用の設定を追加
# systemctl stop httpd … Apacheを停止(restartでは正常に読み込まれないことがある)
# systemctl start httpd … Apacheを起動
■確認
念のため、再度opensslコマンドやhttpsアクセスでテストし、HTTP接続やSSL接続に問題がないか確認する
# openssl s_client -connect refirio.net:443 -showcerts … SSLが正しく設定されているか確認
CONNECTED(00000003)
depth=2 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA … CN(この場合はGlobalSign)を確認
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Domain Validation CA - SHA256 - G2
verify return:1
depth=0 OU = Domain Control Validated, CN = refirio.net
verify return:1
〜以下略〜
サーバに https:// でアクセスして、SSL接続に問題がないか確認する
# systemctl restart httpd … Apacheを再起動して、パスワードを要求されないことを確認