Readme-x509.txt (5955B)
1 This documents the X.509 CAs, certificates, and CRLS used for testing. 2 3 Certification authorities 4 ------------------------- 5 6 There are two main CAs for use as trusted roots: 7 - test-ca.crt aka "C=NL, O=PolarSSL, CN=PolarSSL Test CA" 8 uses a RSA-2048 key 9 test-ca-sha1.crt and test-ca-sha256.crt use the same key, signed with 10 different hashes. 11 - test-ca2*.crt aka "C=NL, O=PolarSSL, CN=Polarssl Test EC CA" 12 uses an EC key with NIST P-384 (aka secp384r1) 13 variants used to test the keyUsage extension 14 The files test-ca_cat12 and test-ca_cat21 contain them concatenated both ways. 15 16 Two intermediate CAs are signed by them: 17 - test-int-ca.crt "C=NL, O=PolarSSL, CN=PolarSSL Test Intermediate CA" 18 uses RSA-4096, signed by test-ca2 19 - test-int-ca-exp.crt is a copy that is expired 20 - test-int-ca2.crt "C=NL, O=PolarSSL, CN=PolarSSL Test Intermediate EC CA" 21 uses an EC key with NIST P-384, signed by test-ca 22 23 A third intermediate CA is signed by test-int-ca2.crt: 24 - test-int-ca3.crt "C=UK, O=mbed TLS, CN=mbed TLS Test intermediate CA 3" 25 uses an EC key with NIST P-256, signed by test-int-ca2 26 27 Finally, other CAs for specific purposes: 28 - enco-ca-prstr.pem: has its CN encoded as a printable string, but child cert 29 enco-cert-utf8str.pem has its issuer's CN encoded as a UTF-8 string. 30 - test-ca-v1.crt: v1 "CA", signs 31 server1-v1.crt: v1 "intermediate CA", signs 32 server2-v1*.crt: EE cert (without of with chain in same file) 33 - keyUsage.decipherOnly.crt: has the decipherOnly keyUsage bit set 34 35 End-entity certificates 36 ----------------------- 37 38 Short information fields: 39 40 - name or pattern 41 - issuing CA: 1 -> test-ca.crt 42 2 -> test-ca2.crt 43 I1 -> test-int-ca.crt 44 I2 -> test-int-ca2.crt 45 I3 -> test-int-ca3.crt 46 O -> other 47 - key type: R -> RSA, E -> EC 48 - C -> there is a CRL revoking this cert (see below) 49 - L -> CN=localhost (useful for local test servers) 50 - P1, P2 if the file includes parent (resp. parent + grandparent) 51 - free-form comments 52 53 List of certificates: 54 55 - cert_example_multi*.crt: 1/O R: subjectAltName 56 - cert_example_wildcard.crt: 1 R: wildcard in subject's CN 57 - cert_md*.crt, cert_sha*.crt: 1 R: signature hash 58 - cert_v1_with_ext.crt: 1 R: v1 with extensions (illegal) 59 - cli2.crt: 2 E: basic 60 - cli-rsa.key, cli-rsa-*.crt: RSA key used for test clients, signed by 61 the RSA test CA. 62 - enco-cert-utf8str.pem: see enco-ca-prstr.pem above 63 - server1*.crt: 1* R C* P1*: misc *(server1-v1 see test-ca-v1.crt above) 64 *CRL for: .cert_type.crt, .crt, .key_usage.crt, .v1.crt 65 P1 only for _ca.crt 66 - server2-v1*.crt: O R: see test-ca-v1.crt above 67 - server2*.crt: 1 R L: misc 68 - server3.crt: 1 E L: EC cert signed by RSA CA 69 - server4.crt: 2 R L: RSA cert signed by EC CA 70 - server5*.crt: 2* E L: misc *(except -selfsigned and -ss-*) 71 -sha*: hashes 72 .eku*: extendeKeyUsage (cli/srv = www client/server, cs = codesign, etc) 73 .ku*: keyUsage (ds = signatures, ke/ka = key exchange/agreement) 74 .req*: CSR, not certificate 75 -der*: trailing bytes in der (?) 76 -badsign.crt: S5 with corrupted signature 77 -expired.crt: S5 with "not after" date in the past 78 -future.crt: S5 with "not before" date in the future 79 -non-compliant.crt: S5, RFC non-compliant 80 (with forbidden EC algorithm identifier NULL parameter) 81 generated by (before fix): 82 cert_write subject_key=server5.key subject_name="CN=Test EC RFC non-compliant" issuer_crt=test-ca2.crt issuer_key=test-ca2.key 83 -selfsigned.crt: Self-signed cert with S5 key 84 -ss-expired.crt: Self-signed cert with S5 key, expired 85 -ss-forgeca.crt: Copy of test-int-ca3 self-signed with S5 key 86 - server6-ss-child.crt: O E: "child" of non-CA server5-selfsigned 87 - server6.crt, server6.pem: 2 E L C: revoked 88 - server7.crt: I1 E L P1(usually): EC signed by RSA signed by EC 89 -badsign.crt: S7 with corrupted signature + I1 90 -expired.crt: S7 with "not after" date in the past + I1 91 -future.crt: S7 with "not before" date in the future + I1 92 _int-ca-exp.crt: S7 + expired I1 93 _int-ca.crt: S7 + I1 94 _int-ca_ca2.crt: S7 + I1 + 2 95 _all_space.crt: S7 + I1 both with misplaced spaces (invalid PEM) 96 _pem_space.crt: S7 with misplaced space (invalid PEM) + I1 97 _trailing_space.crt: S7 + I1 both with trailing space (valid PEM) 98 _spurious_int-ca.crt: S7 + I2(spurious) + I1 99 - server8*.crt: I2 R L: RSA signed by EC signed by RSA (P1 for _int-ca2) 100 - server9*.crt: 1 R C* L P1*: signed using RSASSA-PSS 101 *CRL for: 9.crt, -badsign, -with-ca (P1) 102 - server10.crt: I3 E L 103 -badsign.crt: S10 with corrupted signature 104 -bs_int3.pem: S10-badsign + I3 105 _int3-bs.pem: S10 + I3-badsign 106 _int3_int-ca2.crt: S10 + I3 + I2 107 _int3_int-ca2_ca.crt: S10 + I3 + I2 + 1 108 _int3_spurious_int-ca2.crt: S10 + I3 + I1(spurious) + I2 109 110 Certificate revocation lists 111 ---------------------------- 112 113 Signing CA in parentheses (same meaning as certificates). 114 115 - crl-ec-sha*.pem: (2) server6.crt 116 - crl-future.pem: (2) server6.crt + unknown 117 - crl-rsa-pss-*.pem: (1) server9{,badsign,with-ca}.crt + cert_sha384.crt + unknown 118 - crl.pem, crl-futureRevocationDate.pem, crl_expired.pem: (1) server1{,.cert_type,.key_usage,.v1}.crt + unknown 119 - crl_md*.pem: crl_sha*.pem: (1) same as crl.pem 120 - crt_cat_*.pem: (1+2) concatenations in various orders: 121 ec = crl-ec-sha256.pem, ecfut = crl-future.pem 122 rsa = crl.pem, rsabadpem = same with pem error, rsaexp = crl_expired.pem 123 124 Note: crl_future would revoke server9 and cert_sha384.crt if signed by CA 1 125 crl-rsa-pss* would revoke server6.crt if signed by CA 2 126 127 Generation 128 ---------- 129 130 Newer test files have been generated through commands in the Makefile. The 131 resulting files are committed to the repository so that the tests can 132 run without having to re-do the generation and so that the output is the 133 same for everyone (the generation process is randomized). 134 135 The origin of older certificates has not been recorded.