5.8. 証明書の透過性の使用
Certificate System は、証明書 Certificate Transparency (CT) V1 サポートの基本バージョン (rfc 6962) を提供します。各デプロイメントサイトがルート CA 証明書を含めることを選択した信頼できるログから、Signed Certificate Time スタンプ (SCT) が埋め込まれた証明書を発行する機能があります。また、複数の CT ログに対応するようにシステムを設定することもできます。この機能を使用するには、少なくとも 1 つの信頼できる CT ログが必要です。
重要
デプロイメントサイトが、信頼できる CT ログサーバーとの信頼関係を確立します。
証明書の透過性設定を設定する方法は、『Red Hat Certificate System 計画、インストール、およびデプロイメントのガイド』 の 『証明書の透過性のテスト』 セクションを参照してください。
5.8.1. 証明書の透過性のテスト
CT 設定のテスト方法の例として、以下の手順では Google CT テストログに対する実際のテストを説明します。より包括的なテスト手順では、TLS サーバーを設定し、指定された CT ログからその証明書が含まれるかどうかをテストします。ただし、次のコマンドは、証明書が発行された後に SCT 拡張を含むことを確認するクイックテストとして機能します。
テスト手順は、
openssl
を使用して SCT 拡張を検証するために、Certificate Signing Request (CSR) を生成して送信することで構成されます。CS.cfg
ファイルのテスト設定は次のとおりです。
ca.certTransparency.mode=enabled ca.certTransparency.log.1.enable=true ca.certTransparency.log.1.pubKey=MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw8i8S7qiGEs9NXv0ZJFh6uuOm<snip> ca.certTransparency.log.1.url=http://ct.googleapis.com:80/testtube/ ca.certTransparency.log.1.version=1 ca.certTransparency.log.2.enable=true ca.certTransparency.log.2.pubKey=MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKATl2B3SAbxyzGOfNRB+AytNTG<snip> ca.certTransparency.log.2.url=http://ct.googleapis.com:80/logs/crucible/ ca.certTransparency.log.2.version=1 ca.certTransparency.log.3.enable=false ca.certTransparency.log.3.pubKey=MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiKfWtuoWCPMEzSKySjMjXpo38W<snip> ca.certTransparency.log.3.url=http://ct.googleapis.com:80/logs/solera2020/ ca.certTransparency.log.3.version=1 ca.certTransparency.log.num=3
- まず、CSR を生成します。以下に例を示します。
# PKCS10Client -d . -p passwd -l 2048 -n "cn=user.test.domain.com,OU=user-TEST,O=TestDomain" -o pkcs10-TLS.req
- 次に、
CS.cfg
のca.certTransparency.mode
パラメーターで定義される CT モードに応じて CSR を登録プロファイルに送信します。- パラメーターが 有効 な場合は、登録プロファイルを使用します。
- このパラメーターが perProfile に設定されている場合には、CT プロファイルのいずれかを使用します (例: caServerCertWithSCT)。
- 発行した b64 証明書をファイルにコピーします (例:
.ct1.pem
)。 - pem をバイナリーに変換します。
# AtoB ct1.pem ct1.bin
- DER 証明書の内容を表示します。
# openssl x509 -noout -text -inform der -in ct1.bin
- SCT 拡張が存在することを確認します。以下に例を示します。
CT Precertificate SCTs: Signed Certificate Timestamp: Version : v1 (0x0) Log ID : B0:CC:83:E5:A5:F9:7D:6B:AF:7C:09:CC:28:49:04:87: 2A:C7:E8:8B:13:2C:63:50:B7:C6:FD:26:E1:6C:6C:77 Timestamp : Jun 11 23:07:14.146 2020 GMT Extensions: none Signature : ecdsa-with-SHA256 30:44:02:20:6E:E7:DC:D6:6B:A6:43:E3:BB:8E:1D:28: 63:C6:6B:03:43:4E:7A:90:0F:D6:2B:E8:ED:55:1D:5F: 86:0C:5A:CE:02:20:53:EB:75:FA:75:54:9C:9F:D3:7A: D4:E7:C6:6C:9B:33:2A:75:D8:AB:DE:7D:B9:FA:2B:19: 56:22:BB:EF:19:AD Signed Certificate Timestamp: Version : v1 (0x0) Log ID : C3:BF:03:A7:E1:CA:88:41:C6:07:BA:E3:FF:42:70:FC: A5:EC:45:B1:86:EB:BE:4E:2C:F3:FC:77:86:30:F5:F6 Timestamp : Jun 11 23:07:14.516 2020 GMT Extensions: none Signature : ecdsa-with-SHA256 30:44:02:20:4A:C9:4D:EF:64:02:A7:69:FF:34:4E:41: F4:87:E1:6D:67:B9:07:14:E6:01:47:C2:0A:72:88:7A: A9:C3:9C:90:02:20:31:26:15:75:60:1E:E2:C0:A3:C2: ED:CF:22:A0:3B:A4:10:86:D1:C1:A3:7F:68:CC:1A:DD: 6A:5E:10:B2:F1:8F
また、asn1 ダンプを実行して SCT を確認します。# openssl asn1parse -i -inform der -in ct1.bin
また、以下のように 16 進ダンプを確認します。740:d=4 hl=4 l= 258 cons: SEQUENCE 744:d=5 hl=2 l= 10 prim: OBJECT :CT Precertificate SCTs 756:d=5 hl=3 l= 243 prim: OCTET STRING [HEX DUMP]:0481F000EE007500B0CC83E5A5F97D6B<snip>