|
| 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. |
0 commit comments