AWSではSSL証明書も発行できますが、使い方によっては手間取ったりもします。
AWSで発行できる証明書の概要
AWSでは、AWS Certificate Managerといって、SSL証明書を自前で発行する仕組みがあります。一応「無料」ということになってはいるのですが、秘密鍵は利用者にも手に入らないので、単なるEC2などにセットすることはできません。
CloudFrontやELBなどを通じてセットする必要があるので、EC2単機で動かしているサービスなどでは、ELBを追加する分の料金が発生します。
認証方法
もちろん、SSL証明書を出す以上、適切な認証が必要となります。これにもいくつかの方法があって、
- DNS認証(Route53なら自動設定も可能)
- Eメール認証
と選ぶことができます。ただ、Eメール認証の場合は証明書が切れるたびに再認証が必要となるので、選べるならDNS認証を選びたいところです。
DNS認証の内容…と失敗
DNS認証を行う場合、CNAMEレコードを適切に設定します、例えば、jkr2255.example.com
に証明書を出したい場合、_hogepiyofuga.jkr2255.example.com
のCNAMEとして、_foobarbaz.acm-validations.aws
1のように設定します(hogepiyofuga
やfoobarbaz
は、実際にはAWSからランダムな文字列を指定されます)。一度設定したままにしておけば、半永久的に自動更新される、とのことです。
証明書を切らせるトラブルを起こしたこともありますし、更新不要になるのはいいなと思ってDNSを設定しようとしたのですが、当該ドメインはとあるレンタルサーバでも使っているのでDNS設定をそちらでする必要がありました。で、指定のとおりに設定しようとしたのですが、DNSレコードのドメイン名としてアンダーバーで始まるものを受け付けず、問い合わせてもできないという結果が返ってきました(なお、アンダーバーはホスト名としては適切でないものの、ドメイン名としては問題ない、とのことです)。
結論
AWSと他サービスを連携して使う場合、他サービス側から制約がかかってくることもある2。
-
.aws
というトップレベルドメインは(現状ではAmazonグループ専用として)実在して、http://acm-validations.aws/にアクセスすると、ACMのページにリダイレクトされます。 ↩ -
もちろん、AWS以外のDNSでもアンダーバーを通す例もありましたが。 ↩