0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Lightsail で運用してた個人用ブログの終活作業履歴②

Posted at

AWS Lightsail で運用してた個人用ブログの終活作業履歴① の続きです

前回実施したのは以下の4手順です

1. 切替先となる Route 53 のホストゾーン作成
2. 既存の DNS レコード設定情報を参考に Route 53 のレコード設定
3. ネームサーバーを お名前.com → Route 53 に切り替え
4. ACM 証明書を発行

今回は続きとしてACM関連の残作業を実施します

5. 既存のサーバーレスアプリケーションに設定中のACM証明書の切替
6. 不要となった方のACM証明書を削除

以下は残課題

7. Lightsail内で稼働中のWordPressサイト、その他をバックアップ
8. WordPressサイトについてローカルでの動作環境を構築
9. Lightsailインスタンスを削除
10. Route 53 レコード設定から Lightsail インスタンスのIPv6に向けた設定を削除

5. 既存のサーバーレスアプリケーションに設定中のACM証明書の切替、不要となった方のACM証明書を削除

既存の CloudFront ディストリビューションに設定中のカスタムSSL証明書について、certbotで発行し手動インポートしたものから、ACMのサービス上で発行した証明書に付け替えます。

image.png


最初に CloudFront ディストリビューションの一覧情報の中からディストリビューションごとの一意なIDを取得

CloudShell で CloudFront ディストリビューションのIDの一覧を取得
$ aws cloudfront list-distributions | jq '.DistributionList.Items[].Id'
"E************1"
  • 私の AWS アカウントには CloudFront ディストリビューションは1つのみ存在するため、↑のコマンドで更新対象のIDを取得できました


次に CloudFront ディストリビューションの ID を元に ETag という一意なタグを取得

CloudShell で CloudFront ディストリビューションの ETag 情報を取得
$ aws cloudfront get-distribution-config --id E************1 | jq '.ETag'
"E***********3"
  • この値は後述する update-distribution コマンドで ID とは別に必要となる


再度 get-distribution-config コマンドを実行し、今度は Etag とは異なるキーで管理されている DistributonConfig 情報を取得

CloudShell で CloudFront ディストリビューションの DistributionConfig 情報を取得
$ aws cloudfront get-distribution-config \
  --id E************1 \
  | jq '.DistributionConfig' > config.json
  • DistributionConfig の情報は更新コマンドの中で入力として必要となるため config.json という名前でカレントに保管します

CloudShell 上で config.json を編集

config.json 抜粋
{
~~~ 省略 ~~~
  "ViewerCertificate": {
    "CloudFrontDefaultCertificate": false,
    "ACMCertificateArn": "arn:aws:acm:us-east-1:************:certificate/********-****-****-****-************",
    "SSLSupportMethod": "sni-only",
    "MinimumProtocolVersion": "TLSv1.2_2021",
    "Certificate": "arn:aws:acm:us-east-1:************:certificate/********-****-****-****-************",
    "CertificateSource": "acm"
  }
~~~ 省略 ~~~
}
  • ViewerCertificate.ACMCertificateArnViewerCertificate.Certificate に記載されている ARN についてACMサービス上で新規作成したARNに差し替えて保存
  • エディタは nano と vi が使えたので好きな方を使っていいと思います(vi を使用)

編集した config.json を元に CloudFront ディストリビューションを更新

CloudShell で CloudFront ディストリビューションを更新
$ aws cloudfront update-distribution \
  --id E************1 \
  --if-match E***********3 \
  --distribution-config file://config.json
  • --id で渡している値が CloudFront ディストリビューションのID
  • --if-match で渡してる値が ETag


ACM の証明書一覧で「使用中ですか?」の列の表示が切り替わったことを確認できました

image.png

  • 更新の適格性もACMのサービス上で発行した証明書のため「対象(自動更新が可能な状態)」となりました:relaxed:
  • CloudFront ディストリビューションの方でも切り替わってることを確認
  • アプリケーション自体にもブラウザアクセスして問題なく閲覧できることを確認

ブラウザでアクセスしたときのSSL証明書の様子

image.png

  • 認証局がLetsEncrypt ⇒ Amazon になりました

6. 不要となった方のACM証明書を削除

acm list-certificates コマンドを使用して削除対象のACM証明書のARNを確認します

CloudShell で不要となった方のACM証明書を削除
$ aws acm list-certificates \
  --includes keyTypes=RSA_2048,EC_prime256v1 \
  | jq '.CertificateSummaryList[] | select(.Type == "IMPORTED")'
{
  "CertificateArn": "arn:aws:acm:us-east-1:************:certificate/********-****-****-****-************",
  "DomainName": "imo-tikuwa.com",
  "SubjectAlternativeNameSummaries": [
    "imo-tikuwa.com",
    "*.imo-tikuwa.com"
  ],
  "HasAdditionalSubjectAlternativeNames": false,
  "Status": "ISSUED",
  "Type": "IMPORTED",
  "KeyAlgorithm": "EC-prime256v1",
  "KeyUsages": [
    "DIGITAL_SIGNATURE"
  ],
  "ExtendedKeyUsages": [
    "TLS_WEB_SERVER_AUTHENTICATION",
    "TLS_WEB_CLIENT_AUTHENTICATION"
  ],
  "InUse": false,
  "RenewalEligibility": "INELIGIBLE",
  "NotBefore": "2025-03-30T12:19:41+00:00",
  "NotAfter": "2025-06-28T12:19:40+00:00",
  "CreatedAt": "2023-06-01T14:51:27.469000+00:00",
  "ImportedAt": "2025-03-31T12:53:16.301000+00:00"
}
  • ドキュメントによるとデフォルトで一覧情報として取得可能なACM証明書はキーアルゴリズムが RSA_1024RSA_2048 のいずれかのもののみに限定されてました
    • --includes オプションで keyTypes=RSA_2048,EC_prime256v1 のように取得したいキーアルゴリズムを明示することで certbot で発行してACMに手動インポートした方の証明書情報を取得できました
  • CertificateSummaryList リスト内の Type が IMPORTED となっているのが手動インポートした証明書です。jq コマンドによるフィルタリングによって削除対象を抽出しました
    • ちなみにACMサービス上でリクエスト→検証を済ませた証明書は AMAZON_ISSUED になってました


↑ で取得した情報に含まれる CertificateArn の値を元にACM証明書の削除を実施

CloudShell でACM証明書を削除
$ aws acm delete-certificate \
  --certificate-arn "arn:aws:acm:us-east-1:************:certificate/********-****-****-****-************"


削除後、ACM 証明書の一覧画面に表示される証明書が1つになったことを確認

image.png


ACM 証明書に関する作業が一通り完了しました。

参考サイト

今回使用した aws-cli に関するドキュメントは以下

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?