メモ > サーバ > サービス: AWS > Certificate Manager
■Certificate Manager
自動更新される無料SSL証明書を利用できる
・秘密鍵は取り出せない(AWSにしか使えない)
・ELBかCloudFrontの導入が必要(CloudFrontへの導入は注意が必要みたい)
後にEC2に導入できるようになったが、「CPUが4vCPU以上」などの利用条件がある
・ドメイン認証(DV)のみ対応。実在認証(EV)、組織認証(OV)証明書の発行には対応していない
・暗号化方式の変更はできない(古いガラケーに対応できない)
・サイトシールは発行されない(勝手にそれらしいものを作るのも禁止されている)
・認証局はAmazonになる
・ドメイン所有者の確認はドメイン管理者宛のメールのみ…だったが、後にDNS認証が追加された
などに問題なければ、利用を検討する
[ACM] SSL証明書発行時のドメイン認証メールをSESで受け取ってみた
http://dev.classmethod.jp/cloud/aws/acm-verifydomain-ses/
[ACM]AWSの無料SSL証明書サービスCertificate Manager について調べてみた
http://dev.classmethod.jp/cloud/aws/check_acm_specification/
[AWS Certificate Manager]東京でも無料でSSL証明書が使用可能になりました!
http://dev.classmethod.jp/cloud/aws/acm-available-in-tokyo/
AWS Certificate Manager が発行するサーバ証明書を調べてみた
http://blog.manabusakai.com/2016/01/aws-certificate-manager/
ELBの場合はいいが、CloudFrontを使う場合は問題があるみたい
対処方法はあるが、その場合静的なコンテンツしか配信できないみたい
現時点では、証明書の導入先はロードバランサーの一択になりそう
ACMでSSL証明書0円運用ができなかったはなし
http://qiita.com/seiyakubo/items/4bdf7680d677ef7dc327
■証明書の発行
Certificate Manager → 証明書のプロビジョニング → 今すぐ始める
「パブリック証明書のリクエスト」を選択して「証明書のリクエスト」をクリック
ステップ 1: ドメイン名の追加
*.refirio.net と refirio.net ... ワイルドカードの場合(サブドメインなしのドメインも対象にする場合、ドメインを別途追加する)
www.refirio.net ... 特定のサブドメインのみの場合
「この証明書に別の名前を追加」をクリックして他のサブドメインを追加できる
「次へ」をクリック
ステップ 2: 検証方法を選択する
今回は「Eメールの検証」を選択して進む
(2017年11月に「DNSの検証」が追加された。これからは基本的に「DNSの検証」を利用すれば良さそう。メールの場合は1年に1回更新作業が必要だが、DNSの場合は自動更新される)
ステップ 3: タグを追加
必要に応じて設定し「確認」をクリック
ステップ 4: 確認とリクエスト
入力内容を確認して「確定とリクエスト」をクリック
ステップ 3: 検証
検証するために、以下にメールが送信されると確認される
*.refirio.net
administrator@refirio.net
webmaster@refirio.net
privacy@whoisprivacyprotection.info
hostmaster@refirio.net
postmaster@refirio.net
admin@refirio.net
refirio.net
administrator@refirio.net
webmaster@refirio.net
privacy@whoisprivacyprotection.info
hostmaster@refirio.net
postmaster@refirio.net
admin@refirio.net
「続行」をクリック
検証方法で「DNSの検証」を選択した場合、CNAMEレコードに指定の設定を行う
Route53を使用している場合、「検証」画面でドメインをクリックして表示される「Route 53 でのレコードの作成」をクリックするだけで完了する
(もしくは、証明書一覧でドメインをクリックすると、その中に「Route 53 でのレコードの作成」がある)
5分ほど待つと、検証済みになった
Route53以外のサービスでDNSを管理している場合、そのサービスの画面から設定を行う
「_7dc57e806da3de4055c5cb63f4dc14e2」のようなサブドメインを作成し、指定された内容を記述することになる
ACM証明書発行をDNS検証で行う【エンジニアブログより】 | 株式会社サーバーワークス's Blog
https://www.wantedly.com/companies/serverworks/post_articles/101309
ただし、サブドメインの先頭に「_」を指定できないサービスの場合は認証できないので注意(大塚商会など)
と思ったけど、単純に先頭の「_」を省略して登録すればいいみたい
ACM の DNS 認証を Route 53 以外で設定するときに覚えておくと良いこと:値のアンダースコア(「_」)は無くてもOKです! | DevelopersIO
https://dev.classmethod.jp/cloud/aws/acm-dns-validation-without-underscore/
検証方法で「Eメールの検証」を選択した場合、S3のSES用ディレクトリにメールが保存されていることを確認する
今回は admin@refirio.net 宛のメールが届いた
privacy@whoisprivacyprotection.info はwhoisに登録されたドメインの管理者だと思われる
これは受け取れないので、あらかじめメールの受信環境構築は必要
メール内に記載されているURLから認証する
認証後、証明書の「状況」が「発行済み」になる
DNS検証でACMでのSSL/TLS証明書を発行する | MMMブログ
https://blog.mmmcorp.co.jp/blog/2018/01/26/acm_dns_validation/
ACM証明書発行をDNS検証で行う - サーバーワークスエンジニアブログ
http://blog.serverworks.co.jp/tech/2017/12/04/acm-dns/
■証明書のインポート
別途購入したSSL証明書をインポートできる
いきなりロードバランサーに証明書を登録するとエラーになったときが怖いが、これなら稼働中の環境に影響なく取り込める
Certificate Manager → 証明書のインポート
ステップ 1: 証明書のインポート
証明書本文: 発行された「証明書 RSA/SHA-256」を入力
証明書のプライベートキー: 作成した秘密鍵を入力
証明書チェーン: 発行された「中間証明書」を入力
「次へ」をクリック
ステップ 2: タグを追加
特に何も入力せず「レビューとインポート」をクリック
ステップ 3: レビューとインポート
登録内容を確認して「インポート」をクリック
ACMの証明書インポートとELBのSSLリスナー追加
http://dev.classmethod.jp/cloud/aws/acm_import_elb_ssl_listener/
■証明書の適用(ロードバランサーに導入したとき)
EC2 → ロードバランサー → (対象のロードバランサーを選択) → リスナー → リスナーの追加
プロトコル: HTTPS(セキュアHTTP)
ポート: 443
デフォルトアクション: 転送先 → 作成したロードバランサーを選択
デフォルトの SSL 証明書: ACMから(推奨) → 発行された証明書を選択
「保存」をクリック
SSL経由でアクセスできることを確認する(すぐにアクセスできるようになった)
https://refirio.net/
https://www.refirio.net/
アクセスできない場合、セキュリティグループでロードバランサーへのアクセスを禁止していないか確認する
■証明書の適用(ロードバランサーに複数の証明書を導入したとき)
ALBはSNIに対応しているので、複数のSSL証明書を導入できる
ALBで複数のSSL/TLS証明書を設定できるSNIに対応しました | DevelopersIO
https://dev.classmethod.jp/articles/alb-support-sni/
1つのALBで複数のサイトを作る - インフラ(AWS)とアプリ開発
https://rikues2012.hatenablog.com/entry/2021/10/15/195627
上記のとおり対応しているが、今は画面が変わっている
以下、実際に試したときのメモ
EC2 → ロードバランサー → (対象のロードバランサーを選択) → リスナー → HTTPS:443 → Certificates → Listener certificates for SNI → Add certificate
追加導入したい証明書にチェックを入れ、「Include as pending below」ボタンをクリック
下の「Listener certificates for SNI」に追加されることを確認する(下の一覧には2つが表示された状態になる)
その状態で「Add pending certificates」をクリック
この状態だと、もともと証明書がデフォルトの証明書として扱われている
支障は無いかもしれないが、追加導入した証明書をデフォルトに変更しておく
EC2 → ロードバランサー → (対象のロードバランサーを選択) → リスナー → HTTPS:443 → Certificates → Change default
デフォルトにしたいドメインを選択して「Save as default」をクリック
■証明書の適用(インポートした証明書をクラシックロードバランサーに差し替え導入したとき)
EC2 → ロードバランサー → (対象のロードバランサーを選択) → リスナー → HTTPS「SSL証明書」列の「変更」をクリック
証明書タイプ: ACM から証明書を選択する (推奨)
証明書: (先の手順でインポートした証明書を選択)
「保存」をクリック
■証明書の適用(インポートした証明書をアプリケーションロードバランサーに差し替え導入したとき)
EC2 → ロードバランサー → (対象のロードバランサーを選択) → リスナー → HTTPS行にチェックを入れて「編集」をクリック
デフォルトのSSL証明書: ACM から (推奨) → (先の手順でインポートした証明書を選択)
「保存」をクリック
■証明書の発行(CloudFrontに導入したとき)
CloudFrontに設定するので、操作リージョンをあらかじめ「バージニア北部」に変更
Certificate Manager → 今すぐ始める
ステップ 1: ドメイン名の追加
*.refirio.net と refirio.net ... ワイルドカードの場合
www.refirio.net ... 特定のサブドメインのみの場合
「この証明書に別の名前を追加」をクリック
「次へ」をクリック
ステップ 2: 検証方法を選択する
今回は「Eメールの検証」を選択して進む
ステップ 3: 確認とリクエスト
内容を確認して進む。メールが飛ぶ
メール内に記載されているURLから認証する
認証後、証明書の「状況」が「発行済み」になる
■証明書の適用(CloudFrontに導入したとき)
CloudFront → 対象のIDを選択 → General → Edit
「SSL Certificate」を「Custom SSL Certificate (example.com)」
に変更し、下のテキストボックスから先ほど発行した証明書を選択する
「Yes, Edit」をクリック
SSL経由でアクセスできることを確認する(すぐにアクセスできるようになった)
https://refirio.net/
https://www.refirio.net/
■証明書の更新(「DNSの検証」で導入した場合)
※証明書は自動で更新されるので、特に作業は不要
「Your certificate is renewed」という件名で、以下のメールが届いた
SSL証明書の有効期限を確認すると一年伸びていた
Greetings from Amazon Web Services,
This is to notify you that AWS Certificate Manager (ACM) has completed the renewal of an SSL/TLS certificate that certificate includes the primary domain *.refirio.net and a total of 2 domains.
AWS account ID: 123456789012
AWS Region name: ap-northeast-1
Certificate identifier: arn:aws:acm:ap-northeast-1:123456789012:certificate/9cf0027d-87ca-4cf0-82d9-d8c1419ceb2c
Your new certificate expires on Apr 15, 2020 at 12:00:00 UTC.
If you have questions about this process, please use the Support Center at https://console.aws.amazon.com/support to contact AWS Support. If you don’t have an AWS support plan, post a new thread in the AWS Certificate Manager discussion forum at https://forums.aws.amazon.com/forum.jspa?forumID=206
This notification is intended solely for authorized individuals for *.refirio.net. To express any concerns about this notification or if it has reached you in error, forward it along with a brief explanation of your concern to validation-questions@amazon.com.
Sincerely,
Amazon Web Services
Amazon Web Services, Inc. is a subsidiary of Amazon.com, Inc. Amazon.com is a registered trademark of Amazon.com, Inc. This message was produced and distributed by Amazon Web Services Inc., 410 Terry Ave. North, Seattle, WA 98109-5210
■証明書の更新(「Eメールの検証」で導入した場合)
※証明書は自動で更新されないので、期限が切れる前に作業を行う
Certificate Manager のページで、作業したい証明書に対して
「アクション → 検証Eメールの再送信」
を実行する
以下の確認が表示されたので、送信ボタンを押した
[再送信] をクリックすると、新しい検証 E メールが送信されます。
登録所有者または承認された担当者は、E メールの本文にある指示に従って、ドメイン名の管理権限を検証し、証明書を承認できます。
www.refirio.net
以下のメッセージが表示された
成功
この証明書について新しい検証 E メールをお送りしました。
「Certificate renewal for www.refirio.net requires approval」のような件名でメールが届くので、届いたメールで承認作業を行う
AWSのCertificate Managerですぐに確認しても変化はなく、対象ページのSSL証明書期限も変わっていなかった
が、2〜3日程度様子を見ると有効期限が伸びていた
結構タイムラグがあるみたい(その後試すと、1時間程度で反映されたこともあった)
ACMのSSL証明書期限が切れたので対応する - Qiita
https://qiita.com/ezaqiita/items/70cfb11fafa1d5eed59e
メール検証でACMの証明書の更新を行う - 商売力開発ブログ
https://www.prj-alpha.biz/entry/2018/07/14/003815
■EC2への導入
※未検証
ACMのSSL証明書(Amazonの無料証明書)をEC2(Apache)で利用してみた - DENET 技術ブログ
https://blog.denet.co.jp/acm-ssl-apache/
ACMの証明書をEC2で利用可能になりました - サーバーワークスエンジニアブログ
https://blog.serverworks.co.jp/2020/10/30/083000
比較的最近のアップデートで、ACMで発行したSSL証明書を、EC2のApacheに組み込めるようになっているらしい
Nginxでは以前から対応できていたらしい
…と思ったが、利用条件に「CPUが4vCPU以上」とある。
ACMのSSL証明書(Amazonの無料証明書)をEC2(Apache)で利用してみた - DENET 技術ブログ
https://blog.denet.co.jp/acm-ssl-apache/
4vCPUなのは「t3.xlarge」以上なので、t3.microやt3.smallには使えない
「ロードバランサーも不要な開発環境にちょっと使う」という用途では難しそう
インスタンスタイプ - Amazon EC2 | AWS
https://aws.amazon.com/jp/ec2/instance-types/
■サイトシール
サイトシールは発行されない
勝手にそれらしいものを作るのも禁止されている
よくある質問 - AWS Certificate Manager(簡単に SSL/TLS 証明書を作成、管理、配置) | AWS
https://aws.amazon.com/jp/certificate-manager/faqs/
Q: ACM では、ウェブサイトで表示できるセキュアサイトシールやトラストロゴを利用できますか?
いいえ。サイトシールが必要な場合は、サードパーティベンダーから入手できます。
サイトのセキュリティ、ビジネス手法、またはその両方を評価し、それについて証言してくれるベンダーを選択することをお勧めします。
Q: Amazon の商標やロゴを、証明書バッジ、サイトシール、またはトラストロゴとして使用できますか?
いいえ。このようなシールやバッジは、ACM サービスを使用していないサイトにコピーされたり、虚偽の信頼を確立するため不当に使用されたりするおそれがあります。
Amazon のお客様と評価を保護するため、このような方法でロゴを使用することは禁止されています
■お名前.com を例にした参考手順
お名前.com で取ったドメインを使う - Qiita
https://qiita.com/megane42/items/df84f87c0bdcdd015eb6
初心者でも簡単!お名前.comのDNSサーバーを利用する方法 - 既視感ある日々
https://www.dejavuz.com/computer/onamae-com-dns.html
お名前.comでドメインを取得して、AWSで管理して、色々やってみる - Qiita
https://qiita.com/wannabe/items/17060e244c50d5b467cb
EC2+ACM+ALB+お名前.comで設定をしてサブドメインでhttps接続できるようになるまでひととおり - owani.net#markdown
https://owani.net/aws/ec2-acm-alb/768/
DNS関連機能の設定:DNSレコード設定|お名前.com Navi ガイド|ドメイン取るならお名前.com
https://www.onamae.com/guide/p/70