メモ > サーバ > 構築: 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を再起動して、パスワードを要求されないことを確認。