Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Side by Side Diff: net/data/ssl/scripts/generate-client-certificates.sh

Issue 2390493002: Tidy up ssl_platform_key_android_unittest.cc. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/data/ssl/scripts/generate-android-test-keys.sh ('k') | net/net.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # This script generates certificates that can be used to test SSL client 7 # This script generates certificates that can be used to test SSL client
8 # authentication. Outputs for automated tests are stored in 8 # authentication. Outputs for automated tests are stored in
9 # net/data/ssl/certificates, but may be re-generated for manual testing. 9 # net/data/ssl/certificates, but may be re-generated for manual testing.
10 # 10 #
11 # This script generates two chains of test client certificates: 11 # This script generates several chains of test client certificates:
12 # 12 #
13 # 1. A (end-entity) -> B -> C (self-signed root) 13 # 1. A (end-entity) -> B -> C (self-signed root)
14 # 2. D (end-entity) -> E -> C (self-signed root) 14 # 2. D (end-entity) -> E -> C (self-signed root)
15 # 3. F (end-entity) -> E -> C (self-signed root)
16 # 4. G (end-entity, P-256) -> E -> C (self-signed root)
15 # 17 #
16 # In which A, B, C, D, and E all have distinct keypairs. Both client 18 # In which the certificates all have distinct keypairs. The client
17 # certificates share the same root, but are issued by different 19 # certificates share the same root, but are issued by different
18 # intermediates. The names of these intermediates are hardcoded within 20 # intermediates. The names of these intermediates are hardcoded within
19 # unit tests, and thus should not be changed. 21 # unit tests, and thus should not be changed.
20 22
21 try () { 23 try () {
22 echo "$@" 24 echo "$@"
23 "$@" || exit 1 25 "$@" || exit 1
24 } 26 }
25 27
26 try rm -rf out 28 try rm -rf out
27 try mkdir out 29 try mkdir out
28 30
29 echo Create the serial number files and indices. 31 echo Create the serial number files and indices.
30 serial=1000 32 serial=1000
31 for i in B C E 33 for i in B C E
32 do 34 do
33 try /bin/sh -c "echo $serial > out/$i-serial" 35 try /bin/sh -c "echo $serial > out/$i-serial"
34 serial=$(expr $serial + 1) 36 serial=$(expr $serial + 1)
35 touch out/$i-index.txt 37 touch out/$i-index.txt
36 touch out/$i-index.txt.attr 38 touch out/$i-index.txt.attr
37 done 39 done
38 40
39 echo Generate the keys. 41 echo Generate the keys.
40 for i in A B C D E F 42 for i in A B C D E F
41 do 43 do
42 try openssl genrsa -out out/$i.key 2048 44 try openssl genrsa -out out/$i.key 2048
43 done 45 done
44 46
47 try openssl ecparam -name prime256v1 -genkey -noout -out out/G.key
48
45 echo Generate the C CSR 49 echo Generate the C CSR
46 COMMON_NAME="C Root CA" \ 50 COMMON_NAME="C Root CA" \
47 CA_DIR=out \ 51 CA_DIR=out \
48 ID=C \ 52 ID=C \
49 try openssl req \ 53 try openssl req \
50 -new \ 54 -new \
51 -key out/C.key \ 55 -key out/C.key \
52 -out out/C.csr \ 56 -out out/C.csr \
53 -config client-certs.cnf 57 -config client-certs.cnf
54 58
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 CA_DIR=out \ 101 CA_DIR=out \
98 ID=C \ 102 ID=C \
99 try openssl ca \ 103 try openssl ca \
100 -batch \ 104 -batch \
101 -extensions ca_cert \ 105 -extensions ca_cert \
102 -in out/E.csr \ 106 -in out/E.csr \
103 -out out/E.pem \ 107 -out out/E.pem \
104 -config client-certs.cnf 108 -config client-certs.cnf
105 109
106 echo Generate the leaf certs 110 echo Generate the leaf certs
107 for id in A D F 111 for id in A D F G
108 do 112 do
109 COMMON_NAME="Client Cert $id" \ 113 COMMON_NAME="Client Cert $id" \
110 ID=$id \ 114 ID=$id \
111 try openssl req \ 115 try openssl req \
112 -new \ 116 -new \
113 -key out/$id.key \ 117 -key out/$id.key \
114 -out out/$id.csr \ 118 -out out/$id.csr \
115 -config client-certs.cnf 119 -config client-certs.cnf
116 # Store the private key also in PKCS#8 format. 120 # Store the private key also in PKCS#8 format.
117 try openssl pkcs8 \ 121 try openssl pkcs8 \
(...skipping 29 matching lines...) Expand all
147 COMMON_NAME="E CA" \ 151 COMMON_NAME="E CA" \
148 CA_DIR=out \ 152 CA_DIR=out \
149 ID=E \ 153 ID=E \
150 try openssl ca \ 154 try openssl ca \
151 -batch \ 155 -batch \
152 -extensions san_user_cert \ 156 -extensions san_user_cert \
153 -in out/F.csr \ 157 -in out/F.csr \
154 -out out/F.pem \ 158 -out out/F.pem \
155 -config client-certs.cnf 159 -config client-certs.cnf
156 160
161 echo E signs G
162 COMMON_NAME="E CA" \
163 CA_DIR=out \
164 ID=E \
165 try openssl ca \
166 -batch \
167 -extensions user_cert \
168 -in out/G.csr \
169 -out out/G.pem \
170 -config client-certs.cnf
171
157 echo Package the client certs and private keys into PKCS12 files 172 echo Package the client certs and private keys into PKCS12 files
158 # This is done for easily importing all of the certs needed for clients. 173 # This is done for easily importing all of the certs needed for clients.
159 try /bin/sh -c "cat out/A.pem out/A.key out/B.pem out/C.pem > out/A-chain.pem" 174 try /bin/sh -c "cat out/A.pem out/A.key out/B.pem out/C.pem > out/A-chain.pem"
160 try /bin/sh -c "cat out/D.pem out/D.key out/E.pem out/C.pem > out/D-chain.pem" 175 try /bin/sh -c "cat out/D.pem out/D.key out/E.pem out/C.pem > out/D-chain.pem"
161 try /bin/sh -c "cat out/F.pem out/F.key out/E.pem out/C.pem > out/F-chain.pem" 176 try /bin/sh -c "cat out/F.pem out/F.key out/E.pem out/C.pem > out/F-chain.pem"
177 try /bin/sh -c "cat out/G.pem out/G.key out/E.pem out/C.pem > out/G-chain.pem"
162 178
163 try openssl pkcs12 \ 179 try openssl pkcs12 \
164 -in out/A-chain.pem \ 180 -in out/A-chain.pem \
165 -out client_1.p12 \ 181 -out client_1.p12 \
166 -export \ 182 -export \
167 -passout pass:chrome 183 -passout pass:chrome
168 184
169 try openssl pkcs12 \ 185 try openssl pkcs12 \
170 -in out/D-chain.pem \ 186 -in out/D-chain.pem \
171 -out client_2.p12 \ 187 -out client_2.p12 \
172 -export \ 188 -export \
173 -passout pass:chrome 189 -passout pass:chrome
174 190
175 try openssl pkcs12 \ 191 try openssl pkcs12 \
176 -in out/F-chain.pem \ 192 -in out/F-chain.pem \
177 -out client_3.p12 \ 193 -out client_3.p12 \
178 -export \ 194 -export \
179 -passout pass:chrome 195 -passout pass:chrome
180 196
197 try openssl pkcs12 \
198 -in out/G-chain.pem \
199 -out client_4.p12 \
200 -export \
201 -passout pass:chrome
mattm 2016/10/03 22:51:04 I wonder why this script generates the .p12 files
davidben 2016/10/04 18:56:31 No idea. I've found them useful at times, but I've
202
181 echo Package the client certs for unit tests 203 echo Package the client certs for unit tests
mattm 2016/10/03 22:51:04 While you're here.. would you mind making this cop
davidben 2016/10/04 18:56:31 Done.
182 try cp out/A.pem ../certificates/client_1.pem 204 try cp out/A.pem ../certificates/client_1.pem
183 try cp out/A.key ../certificates/client_1.key 205 try cp out/A.key ../certificates/client_1.key
184 try cp out/A.pk8 ../certificates/client_1.pk8 206 try cp out/A.pk8 ../certificates/client_1.pk8
185 try cp out/B.pem ../certificates/client_1_ca.pem 207 try cp out/B.pem ../certificates/client_1_ca.pem
186 208
187 try cp out/D.pem ../certificates/client_2.pem 209 try cp out/D.pem ../certificates/client_2.pem
188 try cp out/D.key ../certificates/client_2.key 210 try cp out/D.key ../certificates/client_2.key
189 try cp out/D.pk8 ../certificates/client_2.pk8 211 try cp out/D.pk8 ../certificates/client_2.pk8
190 try cp out/E.pem ../certificates/client_2_ca.pem 212 try cp out/E.pem ../certificates/client_2_ca.pem
191 213
192 try cp out/F.pem ../certificates/client_3.pem 214 try cp out/F.pem ../certificates/client_3.pem
193 try cp out/F.key ../certificates/client_3.key 215 try cp out/F.key ../certificates/client_3.key
194 try cp out/F.pk8 ../certificates/client_3.pk8 216 try cp out/F.pk8 ../certificates/client_3.pk8
195 try cp out/E.pem ../certificates/client_3_ca.pem 217 try cp out/E.pem ../certificates/client_3_ca.pem
218
219 try cp out/G.pem ../certificates/client_4.pem
220 try cp out/G.key ../certificates/client_4.key
221 try cp out/G.pk8 ../certificates/client_4.pk8
222 try cp out/E.pem ../certificates/client_4_ca.pem
OLDNEW
« no previous file with comments | « net/data/ssl/scripts/generate-android-test-keys.sh ('k') | net/net.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698