[Urgent] Let's Encrypt revocations affecting your TLS certificates への対処メモ


- AWS Lightsail上でBitnamiのWordpressを利用している環境にて、Let's EncryptのSSL証明書を利用しているが、以下メールを受領。
- 2022年1月28日16:00UTC（日本時間：2022年01月29日(土)01:00）に、証明書を失効させるとのことで、何かしら対応が必要な模様。
- ググってもあまり情報が出てこない為、Let's Encryptのコミュニティサイトの情報を参考に、実施した対応を記載。


## 受信したメール内容（原文）   

Title：[Urgent] Let's Encrypt revocations affecting your TLS certificates
From：noreply@letsencrypt.org
>Hello,
>
>Please immediately renew your TLS certificate(s) that were issued from Let's Encrypt using the TLS-ALPN-01 validation method and the following ACME registration (account) ID(s):
>
> 123456789
>
>We've determined that an error made it possible for TLS-ALPN-01 challenges, completed before today, to not comply with certificate issuance requirements. We have remediated this problem and will revoke all unexpired certificates that used this validation method at 16:00 UTC on 28 January 2022. Please renew your certificates now to ensure an uninterrupted experience for your site visitors.
>
>We apologize for any inconvenience this may cause. If you need support in the renewal process, please comment on our forum post. Our staff and community members are available to help:
>
>https://community.letsencrypt.org/t/170449
>
>Thank you,
>
>The Let's Encrypt Team


## 受信したメール内容（日本語訳）  

>こんにちは。
>
>TLS-ALPN-01認証方式でLet's Encryptから発行されたTLS証明書を、以下のACME登録（アカウント）IDを使用して直ちに更新してください。
>
> 123456789
>
>本日以前に完了したTLS-ALPN-01チャレンジが、証明書発行要件に準拠しない可能性があることが判明しました。この問題を改善し、2022年1月28日16:00UTCにこの検証方法を使用したすべての未使用の証明書を失効させる予定です。サイト訪問者に中断のない体験を保証するために、今すぐ証明書を更新してください。
>
>ご不便をおかけして申し訳ございません。サポートが必要な場合 更新手続きについては、フォーラムへのコメント投稿をお願いします。弊社スタッフおよび コミュニティメンバーがサポートします。


:::note info
要旨
・Let's Encryptから発行されたTLS証明について、問題が発生している為、
　2022年1月28日16:00UTC（日本時間：2022年01月29日(土)01:00）に、証明書を失効させるとのこと。
・それまでに、証明書の更新が必要。
:::


## 証明書更新の為に実行したコマンド  

```console:実行コマンド
/opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="e-mail@gmail.com" --http --http-timeout 30 --http.webroot /opt/bitnami/apps/letsencrypt --domains=domain-name.jp renew --days 100 && sudo /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf -k graceful
```
- 以下の項目は任意の値を設定する。

`--email="e-mail@gmail.com"`　`--domains=domain-name.jp`　`--days 100`

- 以下リンク先で構築した手順だと、証明書はcronを利用して定期的に更新されるようにデフォルト設定がされている模様。
- その為、cronの定義を参考に証明書更新コマンドを抽出。（cron定義：/var/spool/cron/crontabs/bitnami）
- 上記cronの定義内容(デフォルト）では、証明書失効までの残りの有効期限が30日以内でない場合は、更新処理がスキップされる。
- その為、「--days 100」オプションを指定することで、期限が100日以内の場合に更新するというオプションに変更。  

https://qiita.com/1429takahiro/items/b8be7c93c0ed4041958e

```console:実行結果
root@ip-123-123-123-123:~# /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="e-mail@gmail.com" --http --http-timeout 30 --http.webroot /opt/bitnami/apps/letsencrypt --domains=domain-name.jp renew --days 100 && sudo /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf -k graceful
2022/01/26 09:39:28 [INFO] [domain-name.jp] acme: Trying renewal with 1051 hours remaining
2022/01/26 09:39:28 [INFO] [domain-name.jp] acme: Obtaining bundled SAN certificate
2022/01/26 09:39:29 [INFO] [domain-name.jp] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/xxxxxxxxxxx
2022/01/26 09:39:29 [INFO] [domain-name.jp] acme: Could not find solver for: tls-alpn-01
2022/01/26 09:39:29 [INFO] [domain-name.jp] acme: use http-01 solver
2022/01/26 09:39:29 [INFO] [domain-name.jp] acme: Trying to solve HTTP-01
2022/01/26 09:39:35 [INFO] [domain-name.jp] The server validated our request
2022/01/26 09:39:35 [INFO] [domain-name.jp] acme: Validations succeeded; requesting certificates
2022/01/26 09:39:36 [INFO] [domain-name.jp] Server responded with a certificate.
root@ip-123-123-123-123:~# 
root@ip-123-123-123-123:~# echo $?
0
root@ip-123-123-123-123:~#
```


- AuthURLにて出力されたURLにブラウザからアクセスし、得られたJSONの内容は以下の通り  

`https://acme-v02.api.letsencrypt.org/acme/authz-v3/xxxxxxxxxxx`

```json:ブラウザからアクセス
{
  "identifier": {
    "type": "dns",
    "value": "domain-name.jp"
  },
  "status": "valid",
  "expires": "2022-02-25T09:39:31Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "valid",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/xxxxxxxxxxx/aaaaa",
      "token": "1-LLTrll1MxxxxxxxxxxxxxxxxxxxxxxxxxxQK8-aVE",
      "validationRecord": [
        {
          "url": "http://taka-blog.work/.well-known/acme-challenge/1-LLTrll1MxxxxxxxxxxxxxxxxxxxxxxxxxxQK8-aVE",
          "hostname": "domain-name.jp",
          "port": "80",
          "addressesResolved": [
            "123.123.123.123"
          ],
          "addressUsed": "123.123.123.123"
        }
      ],
      "validated": "2022-01-26T09:39:29Z"
    }
  ]
}

```


- challengesの項目にて、`"type": "http-01"`となっている為、更新された模様。
- ブラウザから対象のサイトにアクセスし、URL入力欄の鍵マークから証明書を確認し、更新されたことを確認。

![スクリーンショット 2022-01-26 21.31.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/8f65d58a-b54b-345e-5d1d-75485b1a7d1b.png)


- この辺り、全然詳しくない為、正しい対応は不明だが、上記で一旦様子見する。

## 参考リンク  

https://letsencrypt.org/ja/docs/challenge-types/
https://community.letsencrypt.org/t/questions-about-renewing-before-tls-alpn-01-revocations/170449