This directory contains various certificates for use with SSL-related unit tests. ===== Real-world certificates that need manual updating - google.binary.p7b - google.chain.pem - google.pem_cert.p7b - google.pem_pkcs7.p7b - google.pkcs7.p7b - google.single.der - google.single.pem : Certificates for testing parsing of different formats. - mit.davidben.der : An expired MIT client certificate. - foaf.me.chromium-test-cert.der : A client certificate for a FOAF.ME identity created for testing. - google_diginotar.pem - diginotar_public_ca_2025.pem : A certificate chain for the regression test of http://crbug.com/94673 - salesforce_com_test.pem - verisign_intermediate_ca_2011.pem - verisign_intermediate_ca_2016.pem : Certificates for testing two X509Certificate objects that contain the same server certificate but different intermediate CA certificates. The two intermediate CA certificates actually represent the same intermediate CA but have different validity periods. - ndn.ca.crt: "New Dream Network Certificate Authority" root certificate. This is an X.509 v1 certificate that omits the version field. Used to test that the certificate version gets the default value v1. - ct-test-embedded-cert.pem - ct-test-embedded-with-intermediate-chain.pem - ct-test-embedded-with-intermediate-preca-chain.pem - ct-test-embedded-with-preca-chain.pem Test certificate chains for Certificate Transparency: Each of these files contains a leaf certificate as the first certificate, which has embedded SCTs, followed by the issuer certificates chain. All files are from the src/test/testdada directory in https://code.google.com/p/certificate-transparency/ - leaf_from_known_root.pem : A certificate issued by a public trust anchor, used for CertVerifyProcInternalTest.TestKnownRoot. Using for other purposes is not recommended. This needs to be updated periodically so the server name the cert is valid for may change. - lets-encrypt-dst-x3-root.pem: A chain that ends in the Lets encrypt DST X3 root (https://crt.sh/?id=8395). Has the same leaf as lets-encrypt-isrg-x1-root.pem. - lets-encrypt-isrg-x1-root.pem: A chain that ends in the Lets encrypt ISRG X1 root (https://crt.sh/?id=9314791). Has the same leaf as lets-encrypt-dst-x3-root.pem. ===== Manually generated certificates - client.p12 : A PKCS #12 file containing a client certificate and a private RSA key created for testing. The password is "12345". - client-nokey.p12 : A PKCS #12 file containing a client certificate (the same as the one in client.p12) but no private key. The password is "12345". - client-empty-password.p12 : A PKCS #12 file containing an unencrypted client certificate and a encrypted private key. The password is the empty string, encoded as two zero bytes. (PKCS#12 passwords are encoded as NUL-terminated UTF-16.) - client-null-password.p12 : A PKCS #12 file containing an unencrypted client certificate and a encrypted private key. The password is the empty string, encoded as the empty byte string. - client_with_ec_key.p12 : A PKCS #12 file containing a client certificate and a private EC key created for testing. The password is "12345". - unittest.selfsigned.der : A self-signed certificate generated using private key in unittest.key.bin. The common name is "unittest". - unittest.key.bin : private key stored unencrypted. - multivalue_rdn.pem : A regression test for http://crbug.com/101009. A certificate with all of the AttributeTypeAndValues stored within a single RelativeDistinguishedName, rather than one AVA per RDN as normally seen. - unescaped.pem : Regression test for http://crbug.com/102839. Contains characters such as '=' and '"' that would normally be escaped when converting a subject/issuer name to their stringized form. - websocket_cacert.pem : The testing root CA for testing WebSocket client certificate authentication. This file is used in SSLUITest.TestWSSClientCert. - websocket_client_cert.p12 : A PKCS #12 file containing a client certificate and a private key created for WebSocket testing. The password is "". This file is used in SSLUITest.TestWSSClientCert. - no_subject_common_name_cert.pem: Used to test the function that generates a NSS certificate nickname for a user certificate. This certificate's Subject field doesn't have a common name. - ct-test-embedded-with-uids.pem: A certificate with embedded SCT and issuer/subject unique IDs. This certificate should only be used in parsing tests and otherwise kept fixed. The signature, etc., are intentionally invalid. - name_constrained_key.pem The private key matching the public_key_hash of the kDomainsTest constraint in CertVerifyProc::HasNameConstraintsViolation. ===== From net/data/ssl/scripts/generate-quic-chain.sh - quic-chain.pem - quic-leaf-cert.key - quic-leaf-cert.key.pkcs8.pem - quic-root.pem These certificates are used by integration tests that use QUIC. - quic-leaf-cert.key.sct This isn't generated and just contains a simple text file (the contents don't actually matter, just the presence of the file). ===== From net/data/ssl/scripts/generate-test-certs.sh - expired_cert.pem - ok_cert.pem - root_ca_cert.pem These certificates are the common certificates used by the Python test server for simulating HTTPS connections. - intermediate_ca_cert.pem - ok_cert_by_intermediate.pem These certificates simulate a more common chain of root (root_ca_cert.pem) to intermediate (intermediate_ca_cert.pem) to leaf (ok_cert_by_intermediate.pem). - wildcard_.pem A certificate and private key valid for *.example.org, used in various net unit tests. - test_names.pem A certificate and private key valid for a number of test names. See [test_names] in ee.cnf. Other names may be added as needed. - bad_validity.pem A certificate and private key only valid on 0001-01-01. Windows refuses to parse this certificate. - spdy_pooling.pem : Used to test the handling of spdy IP connection pooling - subjectAltName_sanity_check.pem : Used to test the handling of various types within the subjectAltName extension of a certificate. - policies_sanity_check.pem : Used to test the parsing of various types of certificatePolicies extension policyQualifiers. - punycodetest.pem : A test self-signed server certificate with punycode name. The common name is "xn--wgv71a119e.com" (日本語.com) - sha1_2016.pem Used to test the handling of SHA1 certificates expiring in 2016. - 10_year_validity.pem - 11_year_validity.pem - 39_months_after_2015_04.pem - 40_months_after_2015_04.pem - 60_months_after_2012_07.pem - 61_months_after_2012_07.pem - pre_br_validity_bad_121.pem - pre_br_validity_bad_2020.pem - pre_br_validity_ok.pem - start_after_expiry.pem Certs to test that the maximum validity durations set by the CA/Browser Forum Baseline Requirements are enforced. - may_2018.pem An 825-day certificate issued on May 1, 2018, the official start of enforcement requiring Certificate Transparency for new certificates. This certificate does not have any embedded SCTs. - x509_verify_results.chain.pem : A simple certificate chain used to test that the correctly ordered, filtered certificate chain is returned during verification, regardless of the order in which the intermediate/root CA certificates are provided. - ev_test.pem - ev_test_state_only.pem Certificates for testing EV display (including regression test for https://crbug.com/1069113). ===== From net/data/ssl/scripts/generate-test-keys.sh - rsa-{768,1024,2048}-{1..3}.key - ec-prime256v1-{1..3}.key Pre-generated keys of various types/sizes. Useful for tests that generate RSA certificates with CertBuilder without having to pay the cost of generating RSA keys at runtime. Multiple keys of each size are provided. (EC keys are cheap to generate at runtime, but having some as files simplifies test logic in cases where the test is reading both RSA and EC keys from files.) ===== From net/data/ssl/scripts/generate-redundant-test-chains.sh - redundant-validated-chain.pem - redundant-server-chain.pem - redundant-validated-chain-root.pem Two chains, A -> B -> C -> D and A -> B -> C2 (C and C2 share the same public key) to test that SSLInfo gets the reconstructed, re-ordered chain instead of the chain as served. See SSLClientSocketTest.VerifyReturnChainProperlyOrdered in net/socket/ssl_client_socket_unittest.cc. These chains are valid until 26 Feb 2022 and are generated by net/data/ssl/scripts/generate-redundant-test-chains.sh. ===== From net/data/ssl/scripts/generate-client-certificates.sh - client_1.pem - client_1.key - client_1.pk8 - client_1_ca.pem - client_2.pem - client_2.key - client_2.pk8 - client_2_ca.pem - client_3.pem - client_3.key - client_3.pk8 - client_3_ca.pem - client_4.pem - client_4.key - client_4.pk8 - client_4_ca.pem - client_5.pem - client_5.key - client_5.pk8 - client_5_ca.pem - client_6.pem - client_6.key - client_6.pk8 - client_6_ca.pem - client_1_u16_password.p12 - client_root_ca.pem This is a set of files used to unit test SSL client certificate authentication. - client_1_ca.pem and client_2_ca.pem are the certificates of two distinct signing CAs. - client_1.pem and client_1.key correspond to the certificate and private key for a first certificate signed by client_1_ca.pem. - client_2.pem and client_2.key correspond to the certificate and private key for a second certificate signed by client_2_ca.pem. - each .pk8 file contains the same key as the corresponding .key file as PKCS#8 PrivateKeyInfo in DER encoding. - client_3.pem is nearly identical to client_2.pem, except it is used to test wifi EAP-TLS authentication so it uses a different set of X509v3 extensions. Specifically it includes two Subject Alternative Name fields recognized by Chrome OS. - client_4.pem is similar to client_2.pem but is a P-256 ECDSA key rather than RSA. - client_5.pem is similar to client_2.pem but is a P-384 ECDSA key rather than RSA. - client_6.pem is similar to client_2.pem but is a P-521 ECDSA key rather than RSA. - client_root_ca.pem is the CA certificate which signed client_*_ca.pem. - client_1_u16_password.p12 contains the client_1.key and client_1.pem key and certificate, but is encoded as a PKCS#12 file and has a password with UTF-16 symbols ("Hello, 世界"). ===== From net/data/ssl/scripts/generate-bad-eku-certs.sh - eku-test-root.pem - non-crit-codeSigning-chain.pem - crit-codeSigning-chain.pem Two code-signing certificates (eKU: codeSigning; eKU: critical, codeSigning) which we use to test that clients are making sure that web server certs are checked for correct eKU fields (when an eKU field is present). Since codeSigning is not valid for web server auth, the checks should fail. ===== From net/data/ssl/scripts/generate-multi-root-test-chains.sh - multi-root-chain1.pem - multi-root-chain2.pem Two chains, A -> B -> C -> D and A -> B -> C2 -> E (C and C2 share the same public key) to test that certificate validation caching does not interfere with the chain_verify_callback used by CertVerifyProcChromeOS. See CertVerifyProcChromeOSTest. ===== From net/data/ssl/scripts/generate-multi-root-keychain.sh - multi-root.keychain: An OSX Keychain containing the generated certificates multi-root-*-by-*.pem ===== From net/data/ssl/scripts/generate-duplicate-cn-certs.sh - duplicate_cn_1.p12 - duplicate_cn_1.pem - duplicate_cn_2.p12 - duplicate_cn_2.pem Two certificates from the same issuer that share the same common name, but have distinct subject names (namely, their O fields differ). NSS requires that certificates have unique nicknames if they do not share the same subject, and these certificates are used to test that the nickname generation algorithm generates unique nicknames. The .pem versions contain just the certs, while the .p12 versions contain both the cert and a private key, since there are multiple ways to import certificates into NSS. ===== From net/data/ssl/scripts/generate-self-signed-certs.sh - self-signed-invalid-name.pem - self-signed-invalid-sig.pem Two "self-signed" certificates with mismatched names or an invalid signature, respectively. ===== From net/data/ssl/scripts/generate-key-usage-certs.sh - key_usage_rsa_no_extension.pem - key_usage_rsa_keyencipherment.pem - key_usage_rsa_digitalsignature.pem - key_usage_rsa_both.pem Self-signed RSA certificates with various combinations of keyUsage flags. Their private key is key_usage_rsa.key. - key_usage_p256_no_extension.pem - key_usage_p256_keyagreement.pem - key_usage_p256_digitalsignature.pem - key_usage_p256_both.pem Self-signed P-256 certificates with various combinations of keyUsage flags. Their private key is key_usage_p256.key. ===== From net/data/ssl/scripts/generate_2_client_certs_1_key.sh - 2_client_certs_1_key.p12 Key pair and two client certificates for it in a single .p12 file.