yamotonalds's blog

Webアプリケーション開発における技術メモが中心です。たまにWebサービス、興味を持ったデバイス、自作PCに関する話題もあるかも。Amazon好きなのでAmazon.co.jpアソシエイト使ってます。

SSL証明書の更新

RapidSSLからSSL証明書期限切れ90日前の通知が来たのでギリギリになって焦らないように早めに更新作業を行うことにした。

Netowl上での作業

新規取得手順については以下の記事に書いたが、「新規」という文言が「更新」に変わり入力項目が減ったくらいで更新手順はほとんど同じだった。

CSRの作成とSSL証明書の取得 - yamotonalds's blog

なお、CSRは以前のファイルを使い回した。

すんなり終わるかと思っていたら問題が発生した。

更新のはずが新規扱いで処理された

証明書詳細画面を確認すると申請区分は更新になっているのに有効期限が今日から1年間になっていた。今日は有効期限90日前だったので90日分損していることになる。
そもそもこれでは更新ではなく新規と何も変わらない。

SSLボックスの問い合わせフォームから問い合わせると(問い合わせを受け付けた旨のメール等は無かったが)しばらくしてカスタマーサポートからメールが来た。一部抜粋すると、

発行元とこちらの時差が原因で「90日前」に達する前に
手続が行われてしまい、新規の取り扱いとなってしまったようです。

とのこと。
発行元がRapidSSLだとするとそこからのメールで今回の作業を始めたはずだがどういうことだろう。

詳しい原因はさておき、新規扱いとなった更新をキャンセルして更新申請をし直すことになった。
念のためキャンセルの流れをメモしておく(可能性は低いが誰かの参考になれば良い)。

まず、キャンセル申請はネットオウル側行ったらしく、数日後に

RapidSSL Request for Order Cancellation

というメールが届いた。I confirm the cancellationと返信しろと書いてあったのでそれだけ書いて返信した。
ちなみに、

Order Information Request for <ドメイン名>

というメールもほぼ同時に届き、こちらはWebページ上でキャンセル確認ができそうだったがサポートセンターの指示通り前述のメールにだけ返信し、こちらのメールは無視した。

翌日、RapidSSLから以下のメールが届いた。

AUTO-REPLY: Re: RapidSSL Request for Order Cancellation (#<番号>)

キャンセルを受け付けた旨と作業に2営業日程度かかる旨が書かれていた。

3日後、RapidSSLから以下のメールが届いた。

RE: Re: RapidSSL Request for Order Cancellation (#<番号>)

キャンセルが完了した旨が書かれていたのでサポートセンターに転送。サポートセンターからキャンセル作業を進める旨のメールが届く。
そして数時間後、キャンセル完了のメールがサポートセンターから届いたので最初にやったように管理画面から更新申請し、今度はちゃんと更新された有効期限になっていることを確認した。

AWS上での作業

話は戻って更新作業の続き。
以前設定した時の手順をブログに書いてるつもりだったが書いてなかったようなので改めて書く。
まったくの新規からの作業ではないので抜けがあるかもしれないがあしからず。

前提
  • AWS Elastic Beanstalkを使用している
  • AWS EC2 Elastic Load Balancers(elb)を使用している
  • ブラウザだけで操作する
手順
  1. ブラウザでAWS ConsoleにログインしてEC2の管理画面へ移動
  2. サイドバーのNETWORK & SECURITYからLoad Balancersをクリック
  3. 表示されたelbの一覧からSSL証明書を適用したいものを選択し、下の詳細パネルのListenersタブをクリック
  4. 自分の場合、httpとhttpsを両方使うので、elbの80番ポートからinstanceの80番ポートへのSSL無しの行と、elbの443番ポートからinstanceの80番ポートへのSSL有りの2行が表示されている。
  5. SSL有りの行のSSL Certificate列のChangeをクリックする。
  6. SSL証明書選択画面がポップアップするのでUpload a new SSL Certificateを選択。
  7. Certificate Nameに今から登録する内容に適切な名前を入力する。対象ドメイン名と有効期限が分かるものが良いと思う。(例: example_com__2014-04-01_2015-03-31)
  8. Private Keyにkeyファイルの中身(-----BEGIN RSA PRIVATE KEY-----から-----END RSA PRIVATE KEY-----まで)を入力。今回は以前のCSRを使い回しているのでkeyファイルも前と同じもの。
  9. Public Key Certificateに証明書詳細画面のCERT(SSL証明書)からダウンロードしたファイルの中身(-----BEGIN CERTIFICATE-----から-----END CERTIFICATE-----まで)を入力。
  10. Certificate Chainには証明書詳細画面の中間証明書の内容を入力しても良いが、Android 2.2より古いスマートフォン等の新しい証明書に対応していないものに対応するなら、 RapidSSL - Knowledge Center - SSL Certificates SupportDownload the RapidSSL CA Bundleからダウンロードしたファイルの中身(-----BEGIN CERTIFICATE-----から-----END CERTIFICATE-----までが2つ)を入力する。
  11. SaveボタンをクリックするとChoose from your existing SSL Certificatesが選択され、先ほど作成した名前がプルダウンで選ばれた状態になるがここから先はBeanstalkの設定で行うためCancelをクリックする。
  12. Beanstalkの管理画面に移動し、SSLに対応したい環境名をクリック、サイドバーのConfigurationをクリックする。
  13. 表示された画面の下部、Network TierLoad Balancingの歯車をクリックする。
  14. Load BalancerSSL certificate IDプルダウンから先ほど作成したものの名前を選択し画面右下のSaveをクリックする。
  15. 環境の更新が始まるので正常に終わったらサイトにアクセスしてSSL証明書が更新されていることを確認する(更新されていなければスーパーリロードも試す)。

EC2の画面でSSL証明書のアップロードをしておいて適用はBeanstalkの画面から行うというのが少しわかりにくいかもしれない。
アップロードされたSSL証明書はIAMに保存されるようなのでIAMの画面で操作できれば良いのだが見つからなかった。
今後IAMの画面で操作できるようになるかもしれない。