1This directory contains various certificates for use with SSL-related
2unit tests.
3
4===== Real-world certificates that need manual updating
5- google.binary.p7b
6- google.chain.pem
7- google.pem_cert.p7b
8- google.pem_pkcs7.p7b
9- google.pkcs7.p7b
10- google.single.der
11- google.single.pem
12- thawte.single.pem : Certificates for testing parsing of different formats.
13- login.trustwave.com.pem :
14     Certificate for testing EV with multiple OIDs. Regression test for crbug.com/705285
15
16- googlenew.chain.pem : The refreshed Google certificate
17     (valid until Sept 30 2013).
18
19- mit.davidben.der : An expired MIT client certificate.
20
21- foaf.me.chromium-test-cert.der : A client certificate for a FOAF.ME identity
22     created for testing.
23
24- unosoft_hu_cert : Certificate used by X509CertificateTest.UnoSoftCertParsing.
25
26- google_diginotar.pem
27- diginotar_public_ca_2025.pem : A certificate chain for the regression test
28      of http://crbug.com/94673
29
30- salesforce_com_test.pem
31- verisign_intermediate_ca_2011.pem
32- verisign_intermediate_ca_2016.pem : Certificates for testing two
33     X509Certificate objects that contain the same server certificate but
34     different intermediate CA certificates.  The two intermediate CA
35     certificates actually represent the same intermediate CA but have
36     different validity periods.
37
38- ndn.ca.crt: "New Dream Network Certificate Authority" root certificate.
39     This is an X.509 v1 certificate that omits the version field. Used to
40     test that the certificate version gets the default value v1.
41
42- comodo.pem : A certificate chain for comodo.com which contains signed
43	    certificate timestamps that conform to Chrome's Certificate Transparency
44			policy as of December 2017.
45
46- ct-test-embedded-cert.pem
47- ct-test-embedded-with-intermediate-chain.pem
48- ct-test-embedded-with-intermediate-preca-chain.pem
49- ct-test-embedded-with-preca-chain.pem
50     Test certificate chains for Certificate Transparency: Each of these
51     files contains a leaf certificate as the first certificate, which has
52     embedded SCTs, followed by the issuer certificates chain.
53     All files are from the src/test/testdada directory in
54     https://code.google.com/p/certificate-transparency/
55
56- daltonridgeapts.com-chain.pem : A long-lived (39 month), BR compliant,
57     non-EV certificate, issued by a public trust anchor, and valid for the
58     domain daltonridgeapts.com.
59
60- gms.hongleong.com.my-verisign-chain.pem: A certificate chain for
61  gms.hongleong.com.my issued by VeriSign Class 3 Public Primary Certification
62  Authority - G5. Expires Dec 30 2019.
63- verisign_class3_g5_crosssigned.pem: The SHA1 cross-signed version of
64  VeriSign Class 3 Public Primary Certification Authority - G5
65- verisign_class3_g5_crosssigned-trusted.keychain: OSX Keychain set to Always
66  Trust the certificate in verisign_class3_g5_crosssigned.pem (Generated by
67  scripts/generate-verisign_class3_g5_crosssigned-trusted-keychain.sh)
68
69- www.ahrn.com.pem: A certificate issued by the Legacy Symantec PKI in 2014,
70  expires on 2019-10-27.
71
72- treadclimber.pem: A chain where the leaf does not contain embedded SCTs,
73  and which has a notBefore date after 2018/10/15. Expires 2020/02/07.
74- treadclimber.sctlist: The TLS encoded SignedCertificateTimestampList for the
75  treadclimber.pem leaf certificate.
76
77===== Manually generated certificates
78- client.p12 : A PKCS #12 file containing a client certificate and a private
79     key created for testing.  The password is "12345".
80
81- client-nokey.p12 : A PKCS #12 file containing a client certificate (the same
82     as the one in client.p12) but no private key. The password is "12345".
83
84- client-empty-password.p12 : A PKCS #12 file containing an unencrypted client
85     certificate and a encrypted private key.  The password is the empty string,
86     encoded as two zero bytes.  (PKCS#12 passwords are encoded as
87     NUL-terminated UTF-16.)
88
89- client-null-password.p12 : A PKCS #12 file containing an unencrypted client
90     certificate and a encrypted private key.  The password is the empty string,
91     encoded as the empty byte string.
92
93- unittest.selfsigned.der : A self-signed certificate generated using private
94     key in unittest.key.bin. The common name is "unittest".
95
96- unittest.key.bin : private key stored unencrypted.
97
98- multivalue_rdn.pem : A regression test for http://crbug.com/101009. A
99     certificate with all of the AttributeTypeAndValues stored within a single
100     RelativeDistinguishedName, rather than one AVA per RDN as normally seen.
101
102- unescaped.pem : Regression test for http://crbug.com/102839. Contains
103     characters such as '=' and '"' that would normally be escaped when
104     converting a subject/issuer name to their stringized form.
105
106- ocsp-test-root.pem : A root certificate for the code in
107      net/tools/testserver/minica.py
108
109- websocket_cacert.pem : The testing root CA for testing WebSocket client
110     certificate authentication.
111     This file is used in SSLUITest.TestWSSClientCert.
112
113- websocket_client_cert.p12 : A PKCS #12 file containing a client certificate
114     and a private key created for WebSocket testing. The password is "".
115     This file is used in SSLUITest.TestWSSClientCert.
116
117- no_subject_common_name_cert.pem: Used to test the function that generates a
118  NSS certificate nickname for a user certificate. This certificate's Subject
119  field doesn't have a common name.
120
121===== From net/data/ssl/scripts/generate-quic-chain.sh
122- quic-chain.pem
123- quic-leaf-cert.key
124- quic-leaf-cert.key.pkcs8.pem
125- quic-root.pem
126     These certificates are used by integration tests that use QUIC.
127
128- quic-leaf-cert.key.sct
129     This isn't generated and just contains a simple text file (the contents
130     don't actually matter, just the presence of the file).
131
132===== From net/data/ssl/scripts/generate-test-certs.sh
133- expired_cert.pem
134- ok_cert.pem
135- root_ca_cert.pem
136    These certificates are the common certificates used by the Python test
137    server for simulating HTTPS connections.
138
139- intermediate_ca_cert.pem
140- ok_cert_by_intermediate.pem
141    These certificates simulate a more common chain of root (root_ca_cert.pem)
142    to intermediate (intermediate_ca_cert.pem) to leaf
143    (ok_cert_by_intermediate.pem).
144
145- wildcard_.pem
146    A certificate and private key valid for *.example.org, used in various
147    net unit tests.
148
149- test_names.pem
150    A certificate and private key valid for a number of test names. See
151    [test_names] in ee.cnf. Other names may be added as needed.
152
153- name_constraint_bad.pem
154- name_constraint_good.pem
155    Two certificates used to test the built-in ability to restrict a root to
156    a particular namespace.
157
158- bad_validity.pem
159    A certificate and private key only valid on 0001-01-01. Windows refuses to
160    parse this certificate.
161
162- spdy_pooling.pem : Used to test the handling of spdy IP connection pooling
163
164- subjectAltName_sanity_check.pem : Used to test the handling of various types
165     within the subjectAltName extension of a certificate.
166
167- punycodetest.pem : A test self-signed server certificate with punycode name.
168     The common name is "xn--wgv71a119e.com" (日本語.com)
169
170- sha1_2016.pem
171    Used to test the handling of SHA1 certificates expiring in 2016.
172
173- 10_year_validity.pem
174- 11_year_validity.pem
175- 39_months_after_2015_04.pem
176- 40_months_after_2015_04.pem
177- 60_months_after_2012_07.pem
178- 61_months_after_2012_07.pem
179- pre_br_validity_bad_121.pem
180- pre_br_validity_bad_2020.pem
181- pre_br_validity_ok.pem
182- start_after_expiry.pem
183    Certs to test that the maximum validity durations set by the CA/Browser
184    Forum Baseline Requirements are enforced.
185
186- reject_intranet_hosts.pem
187   A certificate with a non-IANA delegated domain, which is rejected since a CA
188   cannot validate the applicant controls that domain.
189
190- pre_june_2016.pem
191- post_june_2016.pem
192- dec_2017.pem
193   Certs to test that policies related to enforcing CT on Symantec are
194   properly gated on the issuance date. See
195   https://g.co/chrome/symantecpkicerts. (Note, however, that the leaf and
196   root do not actually form a chain.)
197
198- may_2018.pem
199   An 825-day certificate issued on May 1, 2018, the official start of
200   enforcement requiring Certificate Transparency for new certificates. This
201   certificate does not have any embedded SCTs.
202
203- tls_feature_extension.pem
204  A certificate that contains the TLS Feature Extension.
205
206- x509_verify_results.chain.pem : A simple certificate chain used to test that
207    the correctly ordered, filtered certificate chain is returned during
208    verification, regardless of the order in which the intermediate/root CA
209    certificates are provided.
210
211===== From net/data/ssl/scripts/generate-weak-test-chains.sh
212- 2048-rsa-root.pem
213- {768-rsa,1024-rsa,2048-rsa,prime256v1-ecdsa}-intermediate.pem
214- {768-rsa,1024-rsa,2048-rsa,prime256v1-ecdsa}-ee-by-
215      {768-rsa,1024-rsa,2048-rsa,prime256v1-ecdsa}-intermediate.pem
216      Test certificates used to ensure that weak keys are detected and rejected
217
218===== From net/data/ssl/scripts/generate-cross-signed-certs.sh
219- cross-signed-leaf.pem
220- cross-signed-root-md5.pem
221- cross-signed-root-sha256.pem
222     A certificate chain for regression testing http://crbug.com/108514
223
224===== From net/data/ssl/scripts/generate-redundant-test-chains.sh
225- redundant-validated-chain.pem
226- redundant-server-chain.pem
227- redundant-validated-chain-root.pem
228
229     Two chains, A -> B -> C -> D and A -> B -> C2 (C and C2 share the same
230     public key) to test that SSLInfo gets the reconstructed, re-ordered
231     chain instead of the chain as served. See
232     SSLClientSocketTest.VerifyReturnChainProperlyOrdered in
233     net/socket/ssl_client_socket_unittest.cc. These chains are valid until
234     26 Feb 2022 and are generated by
235     net/data/ssl/scripts/generate-redundant-test-chains.sh.
236
237===== From net/data/ssl/scripts/generate-policy-certs.sh
238- explicit-policy-chain.pem
239     A test certificate chain with requireExplicitPolicy field set on the
240     intermediate, with SkipCerts=0. This is used for regression testing
241     http://crbug.com/31497.
242
243===== From net/data/ssl/scripts/generate-client-certificates.sh
244- client_1.pem
245- client_1.key
246- client_1.pk8
247- client_1_ca.pem
248- client_2.pem
249- client_2.key
250- client_2.pk8
251- client_2_ca.pem
252- client_3.pem
253- client_3.key
254- client_3.pk8
255- client_3_ca.pem
256- client_4.pem
257- client_4.key
258- client_4.pk8
259- client_4_ca.pem
260- client_5.pem
261- client_5.key
262- client_5.pk8
263- client_5_ca.pem
264- client_6.pem
265- client_6.key
266- client_6.pk8
267- client_6_ca.pem
268- client_root_ca.pem
269     This is a set of files used to unit test SSL client certificate
270     authentication.
271     - client_1_ca.pem and client_2_ca.pem are the certificates of
272       two distinct signing CAs.
273     - client_1.pem and client_1.key correspond to the certificate and
274       private key for a first certificate signed by client_1_ca.pem.
275     - client_2.pem and client_2.key correspond to the certificate and
276       private key for a second certificate signed by client_2_ca.pem.
277     - each .pk8 file contains the same key as the corresponding .key file
278       as PKCS#8 PrivateKeyInfo in DER encoding.
279     - client_3.pem is nearly identical to client_2.pem, except it is used
280       to test wifi EAP-TLS authentication so it uses a different set
281       of X509v3 extensions.  Specifically it includes two Subject
282       Alternative Name fields recognized by Chrome OS.
283     - client_4.pem is similar to client_2.pem but is a P-256 ECDSA key rather
284       than RSA.
285     - client_5.pem is similar to client_2.pem but is a P-384 ECDSA key rather
286       than RSA.
287     - client_6.pem is similar to client_2.pem but is a P-521 ECDSA key rather
288       than RSA.
289     - client_root_ca.pem is the CA certificate which signed client_*_ca.pem.
290
291===== From net/data/ssl/scripts/generate-bad-eku-certs.sh
292- eku-test-root.pem
293- non-crit-codeSigning-chain.pem
294- crit-codeSigning-chain.pem
295     Two code-signing certificates (eKU: codeSigning; eKU: critical,
296     codeSigning) which we use to test that clients are making sure that web
297     server certs are checked for correct eKU fields (when an eKU field is
298     present). Since codeSigning is not valid for web server auth, the checks
299     should fail.
300
301===== From net/data/ssl/scripts/generate-multi-root-test-chains.sh
302- multi-root-chain1.pem
303- multi-root-chain2.pem
304     Two chains, A -> B -> C -> D and A -> B -> C2 -> E (C and C2 share the
305     same public key) to test that certificate validation caching does not
306     interfere with the chain_verify_callback used by CertVerifyProcChromeOS.
307     See CertVerifyProcChromeOSTest.
308
309===== From net/data/ssl/scripts/generate-multi-root-BFE-keychain.sh
310- multi-root-BFE.keychain: An OSX Keychain containing the generated
311  certificates "multi-root-B-by-F.pem" and "multi-root-F-by-E.pem".
312- multi-root.keychain: An OSX Keychain containing the generated
313  certificates multi-root-*-by-*.pem
314
315===== From net/data/ssl/scripts/generate-duplicate-cn-certs.sh
316- duplicate_cn_1.p12
317- duplicate_cn_1.pem
318- duplicate_cn_2.p12
319- duplicate_cn_2.pem
320     Two certificates from the same issuer that share the same common name,
321     but have distinct subject names (namely, their O fields differ). NSS
322     requires that certificates have unique nicknames if they do not share the
323     same subject, and these certificates are used to test that the nickname
324     generation algorithm generates unique nicknames.
325     The .pem versions contain just the certs, while the .p12 versions contain
326     both the cert and a private key, since there are multiple ways to import
327     certificates into NSS.
328
329===== From net/data/ssl/scripts/generate-aia-certs.sh
330- aia-cert.pem
331- aia-intermediate.der
332- aia-root.pem
333     A certificate chain which we use to ensure AIA fetching works correctly
334     when using NSS to verify certificates (which uses our HTTP stack).
335     aia-cert.pem has a caIssuers that points to "aia-test.invalid" as the URL
336     containing the intermediate, which can be served via a URLRequestFilter.
337     aia-intermediate.der is stored in DER form for convenience, since that is
338     the form expected of certificates discovered via AIA.
339
340===== From net/data/ssl/scripts/generate-self-signed-certs.sh
341- self-signed-invalid-name.pem
342- self-signed-invalid-sig.pem
343     Two "self-signed" certificates with mismatched names or an invalid
344     signature, respectively.
345
346===== From net/data/ssl/scripts/generate-key-usage-certs.sh
347- key_usage_rsa_no_extension.pem
348- key_usage_rsa_keyencipherment.pem
349- key_usage_rsa_digitalsignature.pem
350- key_usage_rsa_both.pem
351     Self-signed RSA certificates with various combinations of keyUsage
352     flags. Their private key is key_usage_rsa.key.
353
354- key_usage_p256_no_extension.pem
355- key_usage_p256_keyagreement.pem
356- key_usage_p256_digitalsignature.pem
357- key_usage_p256_both.pem
358     Self-signed P-256 certificates with various combinations of keyUsage
359     flags. Their private key is key_usage_p256.key.
360
361===== From net/data/ssl/scripts/generate-name-normalization-certs.py
362- name-normalization-printable-utf8.pem
363     Leaf's issuer CN is PrintableString, intermediate's subject CN is
364     UTF8String.
365- name-normalization-case-folding.pem
366     Leaf's issuer CN and intermediate's subject CN are both PrintableString
367     but have differing case on the first character.
368- name-normalization-byteequal.pem
369     Names are byte-equal.
370