| OLD | NEW |
| (Empty) |
| 1 #!/bin/sh | |
| 2 | |
| 3 # Copyright 2013 The Chromium Authors. All rights reserved. | |
| 4 # Use of this source code is governed by a BSD-style license that can be | |
| 5 # found in the LICENSE file. | |
| 6 | |
| 7 # This script generates a two roots - one legacy one signed with MD5, and | |
| 8 # another (newer) one signed with SHA1 - and has a leaf certificate signed | |
| 9 # by these without any distinguishers. | |
| 10 # | |
| 11 # The "cross-signed" comes from the fact that both the MD5 and SHA1 roots share | |
| 12 # the same Authority Key ID, Subject Key ID, Subject, and Subject Public Key | |
| 13 # Info. When the chain building algorithm is evaluating paths, if it prefers | |
| 14 # untrusted over trusted, then it will see the MD5 certificate as a self-signed | |
| 15 # cert that is "cross-signed" by the trusted SHA1 root. | |
| 16 # | |
| 17 # The SHA1 root should be (temporarily) trusted, and the resulting chain | |
| 18 # should be leaf -> SHA1root, not leaf -> MD5root, leaf -> SHA1root -> MD5root, | |
| 19 # or leaf -> MD5root -> SHA1root | |
| 20 | |
| 21 try() { | |
| 22 echo "$@" | |
| 23 "$@" || exit 1 | |
| 24 } | |
| 25 | |
| 26 try rm -rf out | |
| 27 try mkdir out | |
| 28 | |
| 29 try /bin/sh -c "echo 01 > out/2048-sha1-root-serial" | |
| 30 try /bin/sh -c "echo 02 > out/2048-md5-root-serial" | |
| 31 touch out/2048-sha1-root-index.txt | |
| 32 touch out/2048-md5-root-index.txt | |
| 33 | |
| 34 # Generate the key | |
| 35 try openssl genrsa -out out/2048-sha1-root.key 2048 | |
| 36 | |
| 37 # Generate the root certificate | |
| 38 CA_COMMON_NAME="Test Dup-Hash Root CA" \ | |
| 39 try openssl req \ | |
| 40 -new \ | |
| 41 -key out/2048-sha1-root.key \ | |
| 42 -out out/2048-sha1-root.req \ | |
| 43 -config ca.cnf | |
| 44 | |
| 45 CA_COMMON_NAME="Test Dup-Hash Root CA" \ | |
| 46 try openssl x509 \ | |
| 47 -req -days 3650 \ | |
| 48 -sha1 \ | |
| 49 -in out/2048-sha1-root.req \ | |
| 50 -out out/2048-sha1-root.pem \ | |
| 51 -text \ | |
| 52 -signkey out/2048-sha1-root.key \ | |
| 53 -extfile ca.cnf \ | |
| 54 -extensions ca_cert | |
| 55 | |
| 56 CA_COMMON_NAME="Test Dup-Hash Root CA" \ | |
| 57 try openssl x509 \ | |
| 58 -req -days 3650 \ | |
| 59 -md5 \ | |
| 60 -in out/2048-sha1-root.req \ | |
| 61 -out out/2048-md5-root.pem \ | |
| 62 -text \ | |
| 63 -signkey out/2048-sha1-root.key \ | |
| 64 -extfile ca.cnf \ | |
| 65 -extensions ca_cert | |
| 66 | |
| 67 # Generate the leaf certificate request | |
| 68 try openssl req \ | |
| 69 -new \ | |
| 70 -keyout out/ok_cert.key \ | |
| 71 -out out/ok_cert.req \ | |
| 72 -config ee.cnf | |
| 73 | |
| 74 # Generate the leaf certificates | |
| 75 CA_COMMON_NAME="Test Dup-Hash Root CA" \ | |
| 76 try openssl ca \ | |
| 77 -batch \ | |
| 78 -extensions user_cert \ | |
| 79 -days 3650 \ | |
| 80 -in out/ok_cert.req \ | |
| 81 -out out/ok_cert.pem \ | |
| 82 -config ca.cnf | |
| 83 | |
| 84 try openssl x509 -text \ | |
| 85 -in out/2048-md5-root.pem \ | |
| 86 -out ../certificates/cross-signed-root-md5.pem | |
| 87 try openssl x509 -text \ | |
| 88 -in out/2048-sha1-root.pem \ | |
| 89 -out ../certificates/cross-signed-root-sha1.pem | |
| 90 try openssl x509 -text \ | |
| 91 -in out/ok_cert.pem \ | |
| 92 -out ../certificates/cross-signed-leaf.pem | |
| OLD | NEW |