新サーバーにサイトを移行する際、ネームサーバーの浸透完了までのダウンタイムを避けるため、ネームサーバーを切り替える前にSSL通信をできるようにしたかった。
前提
- 旧サーバー:さくらのSSLによる、証明書が発行されている
- 新サーバー:バーチャルホストで運営中のサーバーで、すでに別ドメインがlet’s encrypt でssl通信を行っている。そのため、設定ファイル?などはサーバー内にすでにあり、SSL証明書さえあれば SSL通信が可能な状態。
旧サーバーは以前、let’s encrypt から、さくらのSSL に乗り換えた。
旧サーバーにある、秘密鍵、サーバ証明書、中間証明書をダウンロードして新サーバーにアップロードする。
証明書の場所
SSLCertificateFile /etc/ssl/sakurassl-sslkey/sakurassl-○○○.crt
SSLCertificateKeyFile /etc/ssl/sakurassl-sslkey/sakurassl-○○○.key
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/ssl/sakurassl-sslkey/sakurassl-○○○.cer
Apache 2.4.8以降では、設定ファイルで中間CA証明書を指定する SSLCertificateChainFile ディレクティブが廃止されたので、サーバ証明書に中間証明書の内容を追記して、一つのファイルにまとめる。
Apache 2.4.8以降 | UPKI電子証明書発行サービス
証明書ファイル結合(サーバ証明書+中間証明書の順で記載)
内容:
-----BEGIN CERTIFICATE-----
中略(サーバ証明書の内容を記載)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
中略(中間証明書の内容を記載)
-----END CERTIFICATE-----
新サーバーに /etc/ssl は存在したが sakurassl-sslkey という名前のディレクトリはなかったので、作成してアップロード。
mkdir /etc/ssl/sakurassl-sslkey
/etc/httpd/conf.d/vhost-le-ssl.conf に追記
SSLCertificateFile /etc/ssl/sakurassl-sslkey/sakurassl-○○○.crt
SSLCertificateKeyFile /etc/ssl/sakurassl-sslkey/sakurassl-○○○.key
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/ssl/sakurassl-sslkey/sakurassl-○○○.cer
文法チェック
httpd -t
再起動
systemctl restart httpd