12月8日, 2017 – 3 min read
「証明書チェーンの取得方法」「正しい証明書チェーンの順番とは」などの質問を多く見かけます。 それについて少し説明します。
TL;DR 証明書チェーンは、自分の証明書から始まり、中間証明書またはルート CA 証明書へと続いていきます。
まず最初に、SSL証明書が信頼されるためには、使用するデバイスの信頼できるストア(オペレーションシステムストアまたはFirefoxのようなアプリケーションストア)にあるCAによって発行される必要があります。
証明書の 1 つを見てみましょう。
私のドメイン(矢印参照)に対して、システムはストア内で私の証明書の発行者を探そうとし、見つからない場合(私の例では見つかりません)、私の証明書の発行者の発行者を探そうとするなど、さまざまな方法で探します。
証明書間の関係は、リソースの証明書がルート CA(システムにインストールされている CA)または中間 CA(ルート CA または「上位」中間 CA のいずれかによって発行される)のいずれかによって発行されなければならない証明書のチェーンを作成します。
特定の「証明書チェーン」ファイルがない証明書ファイル (たとえば、多数の .crt) を受け取ることがよくあります。
チェーンを (再) 作成するには、証明書ファイルから始める必要があります。
チェーンファイルの最初のフィールドは、あなたのドメインの証明書でなければなりません(例外があります。 中間CAの証明書は、IssuerとSubjectのフィールドが異なります。
2番目の証明書は、あなたの証明書の発行者の発行者の証明書でなければならず、ルート証明書まで同じです。
私の場合、チェーンは次のようになります:
最初に私の証明書 (STAR_mydomain.crt)
Issuer: C=US, ST=DE, L=Wilmington, O=Corporation Service Company, CN=Trusted Secure Certificate Authority 5
Subject: my subject
チェーンの2番目 (TrustedSecureCertificateAuthority5.crt) です。 注:Subjectは前のファイルのIssuerと同じ:
Issuer: C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust RSA Certification Authority
Subject: C=US, ST=DE, L=Wilmington, O=Corporation Service Company, CN=Trusted Secure Certificate Authority 5
3つ目はUSERTrustRSAAddTrustCA.crt:
Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
Subject: C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust RSA Certification Authority
最後の1つはAddTrustExternalCARoot.crtである。 注:Issuer = Subjectは、ルートCAであることを意味します。 ルートCA証明書をチェーンに追加する必要はありません。
Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
Subject: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
証明書チェーンのファイルを作成するには、次のコマンドを実行します:
$cat STAR_mydomain.crt TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt
AWS Certificate managerなどのサービスの場合:
cat TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt
ファイルは次のようになります:
-----BEGIN CERTIFICATE-----
content of your domain certificate
-----END CERTIFICATE-----
...
-----BEGIN CERTIFICATE-----
content of any intermediate CA certificate
-----END CERTIFICATE-----
あなたの証明書チェーンに問題がないか確認するには、例えばDigiCertなどのオンラインサービスを使って確認できます。
UPDATE: AddTrust External CA Rootの2020年5月30日の有効期限に関する複数の問題の後、情報が更新されました。 ルート証明書を追加する必要はありません。 自己署名証明書を使用しない限り、推奨されません。