Index: net/data/ssl/scripts/generate-multi-root-test-chains.sh |
diff --git a/net/data/ssl/scripts/generate-redundant-test-chains.sh b/net/data/ssl/scripts/generate-multi-root-test-chains.sh |
similarity index 66% |
copy from net/data/ssl/scripts/generate-redundant-test-chains.sh |
copy to net/data/ssl/scripts/generate-multi-root-test-chains.sh |
index d7fd17bdc860f5b24b16f9e143237a8f79f9dc82..8c46cedb33a99f7241efd241ab7c0c3fa72d7c8c 100755 |
--- a/net/data/ssl/scripts/generate-redundant-test-chains.sh |
+++ b/net/data/ssl/scripts/generate-multi-root-test-chains.sh |
@@ -1,23 +1,18 @@ |
#!/bin/sh |
-# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+# Copyright (c) 2014 The Chromium Authors. All rights reserved. |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
# This script generates two chains of test certificates: |
# |
# 1. A (end-entity) -> B -> C -> D (self-signed root) |
-# 2. A (end-entity) -> B -> C2 (self-signed root) |
+# 2. A (end-entity) -> B -> C2 -> E (self-signed root) |
# |
-# in which A, B, C, and D have distinct keypairs. C2 is a self-signed root |
-# certificate that uses the same keypair as C. |
+# C and C2 have the same subject and keypair. |
# |
-# We use these cert chains in |
-# SSLClientSocketTest.VerifyReturnChainProperlyOrdered to ensure that |
-# SSLInfo objects see the certificate chain as validated rather than as |
-# served by the server. The server serves chain 1. The client has C2, NOT D, |
-# installed as a trusted root. Therefore, the chain will validate as chain |
-# 2, even though the server served chain 1. |
+# We use these cert chains in CertVerifyProcChromeOSTest |
+# to ensure that multiple verification paths are properly handled. |
try () { |
echo "$@" |
@@ -29,7 +24,7 @@ try mkdir out |
echo Create the serial number files. |
serial=1000 |
-for i in B C C2 D |
+for i in B C C2 D E |
do |
try /bin/sh -c "echo $serial > out/$i-serial" |
serial=$(expr $serial + 1) |
@@ -40,6 +35,7 @@ try openssl genrsa -out out/A.key 2048 |
try openssl genrsa -out out/B.key 2048 |
try openssl genrsa -out out/C.key 2048 |
try openssl genrsa -out out/D.key 2048 |
+try openssl genrsa -out out/E.key 2048 |
echo Generate the D CSR. |
CA_COMMON_NAME="D Root CA" \ |
@@ -61,36 +57,44 @@ CA_COMMON_NAME="D Root CA" \ |
-out out/D.pem \ |
-text |
-echo Generate the C2 root CSR. |
-CA_COMMON_NAME="C CA" \ |
- CERTIFICATE=C2 \ |
+echo Generate the E CSR. |
+CA_COMMON_NAME="E Root CA" \ |
+ CERTIFICATE=E \ |
try openssl req \ |
-new \ |
- -key out/C.key \ |
- -out out/C2.csr \ |
+ -key out/E.key \ |
+ -out out/E.csr \ |
-config redundant-ca.cnf |
-echo C2 signs itself. |
-CA_COMMON_NAME="C CA" \ |
+echo E signs itself. |
+CA_COMMON_NAME="E Root CA" \ |
try openssl x509 \ |
-req -days 3650 \ |
- -in out/C2.csr \ |
+ -in out/E.csr \ |
-extensions ca_cert \ |
-extfile redundant-ca.cnf \ |
- -signkey out/C.key \ |
- -out out/C2.pem \ |
+ -signkey out/E.key \ |
+ -out out/E.pem \ |
-text |
+echo Generate the C2 intermediary CSR. |
+CA_COMMON_NAME="C CA" \ |
+ CERTIFICATE=C2 \ |
+ try openssl req \ |
+ -new \ |
+ -key out/C.key \ |
+ -out out/C2.csr \ |
+ -config redundant-ca.cnf |
+ |
echo Generate the B and C intermediaries\' CSRs. |
for i in B C |
do |
- name="$i Intermediate CA" |
CA_COMMON_NAME="$i CA" \ |
- CERTIFICATE=$i \ |
+ CERTIFICATE="$i" \ |
try openssl req \ |
-new \ |
- -key out/$i.key \ |
- -out out/$i.csr \ |
+ -key "out/$i.key" \ |
+ -out "out/$i.csr" \ |
-config redundant-ca.cnf |
done |
@@ -106,6 +110,18 @@ CA_COMMON_NAME="D Root CA" \ |
-out out/C.pem \ |
-config redundant-ca.cnf |
+echo E signs the C2 intermediate. |
+# Make sure the signer's DB file exists. |
+touch out/E-index.txt |
+CA_COMMON_NAME="E Root CA" \ |
+ CERTIFICATE=E \ |
+ try openssl ca \ |
+ -batch \ |
+ -extensions ca_cert \ |
+ -in out/C2.csr \ |
+ -out out/C2.pem \ |
+ -config redundant-ca.cnf |
+ |
echo C signs the B intermediate. |
touch out/C-index.txt |
CA_COMMON_NAME="C CA" \ |
@@ -135,14 +151,11 @@ CA_COMMON_NAME="B CA" \ |
-out out/A.pem \ |
-config redundant-ca.cnf |
-echo Create redundant-server-chain.pem |
+echo Create multi-root-chain1.pem |
try /bin/sh -c "cat out/A.key out/A.pem out/B.pem out/C.pem out/D.pem \ |
- > ../certificates/redundant-server-chain.pem" |
- |
-echo Create redundant-validated-chain.pem |
-try /bin/sh -c "cat out/A.key out/A.pem out/B.pem out/C2.pem \ |
- > ../certificates/redundant-validated-chain.pem" |
+ > ../certificates/multi-root-chain1.pem" |
-echo Create redundant-validated-chain-root.pem |
-try cp out/C2.pem ../certificates/redundant-validated-chain-root.pem |
+echo Create multi-root-chain2.pem |
+try /bin/sh -c "cat out/A.key out/A.pem out/B.pem out/C2.pem out/E.pem \ |
+ > ../certificates/multi-root-chain2.pem" |