certbotの証明書ディレクトリ

certbotで取得した証明書は、/etc/letsencrypt/archive/以下に保存され、その最新版へのリンクが/etc/letsencrypt/live/以下に置かれる。Webサーバへの証明書設定はリンクの方で指定すればいい。


    証明書の名前

    ここでいう「証明書の名前」は証明書の実体内容とは無関係で、certbotコマンドの管理上の証明書ファイルパスなどで使われる名前のことで、取得時に--cert-nameで指定できる。

    デフォルトは--domainsで指定の1番目のドメイン名となる(結局、証明書実体の「一般名称(CN)」と同じ)。変更する必要性はあまりないだろうし、以降「1番目ドメイン名」のままとして進める。

    certbot-auto certificatesコマンドで取得した証明書の一覧を出すと、証明書の名前も確認できる。

    # 証明書リスト
    certbot-auto certificates
    Found the following certs:
      Certificate Name: 1番目ドメイン名
    (中略)
    

    証明書の更新(再取得)をしても、名前は原則として同じ。

    なお、証明書の一般名称(CN)は、opensslコマンドで確認できる。

    pem=/etc/letsencrypt/live/1番目ドメイン名/fullchain.pem
    openssl x509 -text -in $pem | grep 'Subject: CN='
            Subject: CN=1番目ドメイン名
    

    証明書の名前が重複すると

    証明書が存在するのに--duplicateで新規取得すると、別個の証明書ができる。新しい証明書の名前は「1番目ドメイン名-0001」のようになって、Webサーバの指定でも管理しずらい。

    一方、下記の場合は名前が変わらない。


    証明書の保存場所 /etc/letsencrypt/archive/

    取得した証明書や秘密鍵などは、/etc/letsencrypt/archive/1番目ドメイン名/以下に保存される。

    /etc/letsencrypt/archive/1番目ドメイン名/
    ├── cert1.pem
    ├── cert2.pem
    ├── chain1.pem
    ├── chain2.pem
    ├── fullchain1.pem
    ├── fullchain2.pem
    ├── privkey1.pem
    └── privkey2.pem
    

    1回目の取得はcert1.pemなどとなるが、証明書を更新するとcert2.pemなどとなる。

    これだとWebサーバへの証明書パスの指定は面倒なので、下記のリンク側を利用する。


    最新証明書へのリンク場所 /etc/letsencrypt/live/

    最新の証明書へのリンクが/etc/letsencrypt/live/1番目ドメイン名/以下にできる。証明書を更新すると、リンクも原則更新される。リンク名は変わらないので使いやすい。

    /etc/letsencrypt/live/1番目ドメイン名/
    ├── cert.pem -> ../../archive/1番目ドメイン名/cert2.pem
    ├── chain.pem -> ../../archive/1番目ドメイン名/chain2.pem
    ├── fullchain.pem -> ../../archive/1番目ドメイン名/fullchain2.pem
    └── privkey.pem -> ../../archive/1番目ドメイン名/privkey2.pem
    

    つまり、Webサーバへの設定では、こっちのリンク側で指定する。

    証明書の内容はopensslコマンドで変換して確認できる。

    openssl x509 -text -in fullchain.pem