Twitter Facebook github

ELBに証明書を登録できない時はAWS CLIを試す

AWS ELBに証明書を登録しようとしたときにエラーになったので、その回避策をメモ。

AWS ELBではHTTPSで行われた通信をELBデコードして、バックエンドのサーバーとはHTTPで通信することができます。
こうしておくと証明書更新などで複数台のEC2を直接手を入れることなく、またウェブサーバー側のSSL通信に関わるオーバーヘッドも無くなるため、AWS内で構築する場合には採用することが多いかと思います。

この構成を取る場合、証明書、証明書の秘密鍵をELBにアップロードする必要があります。

エラーの内容

新規でELBを構築しようとした場合、管理コンソールには上のような設定画面があり、証明書・秘密鍵・中間証明書をそれぞれ入力して登録するのですが、何度正しい証明書を登録しようとしても「Server Certificate not found for the key」というエラーで弾かれてしまいました。

ちなみに、証明書自体が誤りの場合は「Unable to parse certificate. Please ensure the certificate is in PEM format.」というエラーが出ます。

解決策

何度やってもダメだったので、諦めてAWS CLIから証明書を登録するとうまくいきました。

カレントディレクトリに3つのファイル example.com.crt, example.com.key, example.com.ca.crt を置いて実行します。拡張子も自由ですが、私はcrtは証明書、keyは秘密鍵として命名しています。

応答の形式はCLIの設定に依存しますが、正しくアップロードできれば上のように登録した証明書のメタデータが返ってきます。
このARNを使うことでそのままCLIからELBを設定することもできますし、管理コンソール上からも選択できるようになります。

AWS Certificate Manager のコト

余談になりますが、最近、AWS上で証明書を発行・管理できる、 AWS Certificate Manager(ACM)がリリースされました。

まだ東京リージョンでは利用できないのですが、早速使ってみたところ、ものの数分で有効な証明書が無料で使用できるようになりました。ドメインを入力すると、一般的な管理者アドレス(例えば admin@example.com など)に承認メールが届き、そのメールを介して所有権確認が行われ、即時発行される仕組みです。当然ですがAWSの他サービス(ELB、CloudFront等)との親和性が非常に高く、また証明書発行・維持は完全に無料です。

残念ながらACMで発行した証明書を別のリージョンで使うことはできなかったので、東京リージョンで使えるようになるのが待ち遠しいです。

所感

最近お仕事が本当に忙しくて、全然寝られない日々が続きました。体も壊したので、いくら引きこもったまま働けるIT系でも体が一番の資本だなあと再認識しました。エンジニアのみなさん、深夜に電話に起こされることがないようなシステム(プログラムも、運用体制も)を作っておくことをオススメします。。。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください