1、はじめに
証明書更新をする際に、中間証明書の期限切れに気づかず適用してしまったため、該当証明書が適用されたサイトがダウンしてしまった。
今後同じミスをしないように、証明書チェーンの整合性を一撃で確認する方法を記載します。
合わせて、AWSCLIから証明書更新する方法についても記載します。
2、 確認・更新方法
2−1、前提条件
以下のopensslバージョンで動作することを確認しています。
openssl version LibreSSL 3.3.6
2−2、証明書チェーン確認方法
certificate、certificate_chainに証明書と中間証明書のファイル名を設定します。
private_keyはAWSCLIで証明書を更新する際に必要です。確認のみ実施する場合は設定し無しでも問題ありません
certificate="<証明書ファイル名>" certificate_chain="<中間証明書ファイル名>" private_key="<秘密鍵ファイル名>" openssl verify -CAfile <(cat <(curl -s https://curl.se/ca/cacert.pem) $certificate_chain) $certificate
チェーンが正常な場合は以下の表示になります。
<証明書ファイル名>: OK
チェーンが異常な場合は以下のような表示になります。
C = JP, ST = Tokyo, L = hugahuga, O = Hogehoge Corporation, CN = *.hogehoge.com error 20 at 0 depth lookup:unable to get local issuer certificate <証明書ファイル名>: verification failed: 20 (unable to get local issuer certificate)
2−3、AWSCLIからACMの証明書更新
certificate_arnは証明書更新対象となるACMのARNを指定します。
例:arn:aws:acm:<リージョンID>:<AWSアカウントID>:certicate/12345678-12ab-abcd-abcd-123456789abc
regionは更新対象のACMがあるリージョンIDを指定します。
例:ap-northeast-1
以下に示したコマンドを実行して、ACMの証明書を更新します。
更新前後で「Certificate.NotAfter」の値が変化していることを確認します。
certificate_arn="<対象ACMのARNを記載>" region="<リージョンIDを記載>" #証明書更新前の値を取得 aws acm describe-certificate --certificate-arn ${certificate_arn} --region ${region} --query 'Certificate.NotAfter' #証明書更新 aws acm import-certificate \ --certificate fileb://${certificate} \ --certificate-chain fileb://${certificate_chain} \ --private-key fileb://${private_key} \ --certificate-arn ${certificate_arn} \ --region ${region} #証明書更新後の値を取得 aws acm describe-certificate --certificate-arn ${certificate_arn} --region ${region} --query 'Certificate.NotAfter'