Webサーバ移行時にお試し! - レンタルサーバからAWS(EC2)へのSSL証明書の移行

WebサイトをレンタルサーバからAWS(EC2)上に移行するにあたって、SSL証明書も移行しました。
サーバ移行にあたって、SSL証明は再発行が必要かと思っていましたが、移行してコスト削減が可能な場合があります。
ここではその手順について記しています。

※移行確認後に一部文章を変更しました。

SSL証明書って移行できるの?

WebサイトをAWS(EC2)上に移行しました。

レンタルサーバ ( ギガーン ) 上に構築されているWebサイトの移行になります。
これに伴いSSL証明書もこれまで利用していたレンタルサーバから移行する事にしました。

当初、『SSL証明書って移行できるの?』と思って調べてみたところ、以下サイトにあるように、幾つかの条件を満たせば移行が可能との事です。

SSLサーバ証明書を別のサーバに移行したい。 - SSLオフ.com:

幸いギガーンでは、サーバ解約時に申請を行う事でSSL証明書の転出を行ってくれるとの事。
という事でとりあえずやってみました。

移行手順

まずは必要なもの

移行するにあたっては、SSL情報を転出して頂く必要があります。
解約申請書にてSSLの転出をお願いする旨記述し、以下ファイルを送付して頂きました。

認証局の証明書sample.co.jp.ca.crt
サーバ証明書sample.co.jp.crt
サーバ秘密鍵sample.co.jp.key

これらファイルは新サーバのSSL設定にも必要ですが、今後別サーバに設定しなおす場合等にも必要となります。無くしたり漏えいしたりする事がないように、厳重に保管しましょう。

なお、移行先の環境は以下になります。

OSAmazon Linux ( 64bit )
Apache (httpd)2.2.26-1.1.amzn1.x86_64

mod_sslのインストール

ここからは、上記ファイルを利用してAmazon Linux 上で作業を行っていきます。

Amazon Linuxの初期状態では mod_sslはインストールされていません。インストールされていない場合、インストールを行います。

$ sudo yum install mod_ssl

証明書ファイル群の転送

転出してもらったファイル群をサーバに転送します。scpクライアント等を利用してファイルを転送して下さい ( 私は WinSCPを利用する事が多い )。

ファイル転送後はそれぞれのファイルを以下に移動(mv)します

認証局の証明書/etc/pki/tls/certs/sample.co.jp.ca.crt
サーバ証明書/etc/pki/tls/certs/sample.co.jp.crt
サーバ秘密鍵/etc/pki/tls/private/sample.co.jp.key

ファイルのオーナーとパーミッションを変更します。

$ sudo chown root:root /etc/pki/tls/certs/sample.co.jp*.crt
$ sudo chmod 0400 /etc/pki/tls/certs/sample.co.jp*.crt

$ sudo chown root:root /etc/pki/tls/private/sample.co.jp.key
$ sudo chmod 0400 /etc/pki/tls/private/sample.co.jp.key

設定ファイルの編集

mod_sslをインストールすると、/etc/httpd/conf.d/ssl.conf というSSL設定のための設定ファイルが追加されます。これを編集します。(必要に応じて、適宜バックアップを取る等してください)

$ sudo vi /etc/httpd/conf.d/ssl.conf
以下の内容 ( 抜粋 ) で編集します。
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/sample.co.jp.crt

#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/sample.co.jp.key

#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
SSLCACertificateFile /etc/pki/tls/certs/sample.co.jp.ca.crt

設定確認、及び、再起動

設定を確認し、問題なければ httpd を再起動します。

$ httpd -t
Syntax OK
Syntax OK と表示されれば設定は ( 文法的には ) OK
$ sudo /etc/rc.d/init.d/httpd restart

確認

Apache (httpd) が無事再起動したら、Webブラウザからアクセスして確認を行います。

移行中等の理由で、ホスト名(上記例の場合 www.sample.co.jp ) でアクセスできない場合、hosts ファイルを編集する等して https://www.sample.co.jp/ で移行先のApacheにアクセス可能な状態にして下さい。

OKの場合

以下 Firefox で確認した場合です。

SSL OK

今回私が移行作業を行ったものについては、無事移行が行えたようです ( 最終的な確認は、ドメインの移管とDNS切り替えが完了してから )。
今回 ギガーン からの転出でしたが、SSLの転出を行ってくれるレンタルサーバからの移行であれば、同様の手順でSSL移行が行えるのではないかと思います。

NGの場合

コモンネームに違いがあるなどして移行が正しい行えなかった場合、おそらく以下のような表示がなされると思います。( ※今回は移行に成功したので、NGの場合にこのようになったと確認できたわけではありません )

SSL NG

まとめ

弊社の環境においては、SSL証明書の移行は可能でした。

幾つか条件はありますが、通常のサーバ移行ではWebサーバの種類やコモンネームが変更になる事はあまりないと思われるので、SSL証明書が移行可能な場合は多いのではないでしょうか

移行作業自体もそれほど難しいものではないので、サーバ移行の際に『SSL証明書の期限がまだ残っているがどうしようか?』という場合、再発行を行う前に移行可能かどうか試してみる価値はあるのではないでしょうか。