@@ -49,8 +49,8 @@ Certificate chain where the leaf is revoked
4949
5050## Test Data for testing CRL providers functionality
5151
52- To generate test data please follow the steps below or run provider_create.sh
53- script. All the files have ` provider_ ` prefix.
52+ To generate test data please run provider_create.sh script. All the files have
53+ ` provider_ ` prefix.
5454
5555We need to generate the following artifacts for testing CRL provider:
5656* server self signed CA cert
@@ -62,73 +62,31 @@ We need to generate the following artifacts for testing CRL provider:
6262* crl file by 'malicious' CA which contains the same issuer with original CA
6363
6464
65- Please find the related commands below.
65+ All the commands are provided in provider_create.sh script. Please find the
66+ description below.
6667
67- * Generate self signed CAs
68- ```
69- $ openssl req -x509 -newkey rsa:4096 -keyout provider_server_trust_key.pem -out provider_server_trust_cert.pem -days 365 -subj "/C=US/ST=VA/O=Internet Widgits Pty Ltd/CN=foo.bar.hoo.ca.com" -nodes
70- $ openssl req -x509 -newkey rsa:4096 -keyout provider_client_trust_key.pem -out provider_client_trust_cert.pem -days 365 -subj "/C=US/ST=CA/L=SVL/O=Internet Widgits Pty Ltd" -nodes
71- ```
72-
73- * Generate client and server certs signed by CAs
74- ```
75- $ openssl req -newkey rsa:4096 -keyout provider_server_cert.key -out provider_new_cert.csr -nodes -subj "/C=US/ST=CA/L=DUMMYCITY/O=Internet Widgits Pty Ltd/CN=foo.bar.com" -sha256
76- $ openssl x509 -req -in provider_new_cert.csr -out provider_server_cert.pem -CA provider_client_trust_cert.pem -CAkey provider_client_trust_key.pem -CAcreateserial -days 3650 -sha256 -extfile provider_extensions.conf
68+ 1 . The first two commands generate self signed CAs for client and server:
69+ - provider_server_trust_key.pem
70+ - provider_server_trust_cert.pem
71+ - provider_client_trust_key.pem
72+ - provider_client_trust_cert.pem
7773
78- $ openssl req -newkey rsa:4096 -keyout provider_client_cert.key -out provider_new_cert.csr -nodes -subj "/C=US/ST=CA/O=Internet Widgits Pty Ltd/CN=foo.bar.hoo.com" -sha256
79- $ openssl x509 -req -in provider_new_cert.csr -out provider_client_cert.pem -CA provider_server_trust_cert.pem -CAkey provider_server_trust_key.pem -CAcreateserial -days 3650 -sha256 -extfile provider_extensions.conf
80- ```
81-
82- Here is the content of ` provider_extensions.conf ` -
83- ```
84- [extensions]
85- subjectKeyIdentifier = hash
86- authorityKeyIdentifier = keyid,issuer
87- basicConstraints = CA:FALSE
88- keyUsage = digitalSignature, keyEncipherment
89- ```
74+ 2 . Generate client and server certs signed by the CAs above:
75+ - provider_server_cert.pem
76+ - provider_client_cert.pem
9077
91- * Generate CRLs
92- For CRL generation we need 2 more files called ` index.txt ` and ` crlnumber.txt ` :
93- ```
94- $ echo "1000" > provider_crlnumber.txt
95- $ touch provider_index.txt
96- ```
97- Also we need another config ` provider_crl.cnf ` -
98- ```
99- [ ca ]
100- default_ca = my_ca
101-
102- [ my_ca ]
103- crl = crl.pem
104- default_md = sha256
105- database = provider_index.txt
106- crlnumber = provider_crlnumber.txt
107- default_crl_days = 30
108- default_crl_hours = 1
109- crl_extensions = crl_ext
110-
111- [crl_ext]
112- # Authority Key Identifier extension
113- authorityKeyIdentifier=keyid:always,issuer:always
114- ```
78+ 3 . The next 2 commands create 2 files needed for CRL issuing:
79+ - provider_crlnumber.txt
80+ - provider_index.txt
11581
116- The commands to generate empty CRL file and CRL file containing revoked server
117- cert are below.
118- ```
119- $ openssl ca -gencrl -keyfile provider_client_trust_key.pem -cert provider_client_trust_cert.pem -out provider_crl_empty.pem -config provider_crl.cnf
120- $ openssl ca -revoke provider_server_cert.pem -keyfile provider_client_trust_key.pem -cert provider_client_trust_cert.pem -config provider_crl.cnf
121- $ openssl ca -gencrl -keyfile provider_client_trust_key.pem -cert provider_client_trust_cert.pem -out provider_crl_server_revoked.pem -config provider_crl.cnf
122- ```
82+ 4 . The next 3 commands generate an empty CRL file and a CRL file containing
83+ revoked server cert:
84+ - provider_crl_empty.pem
85+ - provider_crl_server_revoked.pem
12386
124- The commands to generate CRL file by 'malicious' CA are below. Note that we use
125- Subject Key Identifier from previously generated provider_client_trust_cert.pem
126- to generate malicious certs / CRL.
127- ```
128- $ openssl genrsa -out provider_malicious_client_trust_key.pem 4096
129- $ SKI=$(openssl x509 -in provider_client_trust_cert.pem -noout -text | awk '/Subject Key Identifier/ {getline; print $1;}')
130- $ sed -i "s/subjectKeyIdentifier = X/subjectKeyIdentifier = $SKI/g" provider_extensions.conf
131- $ openssl req -new -key provider_malicious_client_trust_key.pem -out cert_malicious_request.csr -subj "/C=US/ST=CA/L=SVL/O=Internet Widgits Pty Ltd" -config provider_extensions.conf
132- $ openssl x509 -req -in cert_malicious_request.csr -signkey provider_malicious_client_trust_key.pem -out provider_malicious_client_trust_cert.pem -days 365 -extfile provider_extensions.conf -extensions extensions
133- $ openssl ca -gencrl -keyfile provider_malicious_client_trust_key.pem -cert provider_malicious_client_trust_cert.pem -out provider_malicious_crl_empty.pem -config provider_crl.cnf
134- ```
87+ 5 . The final section contains commands to generate CRL file by 'malicious' CA.
88+ Note that we use Subject Key Identifier from previously created
89+ provider_client_trust_cert.pem to generate malicious certs / CRL.
90+ - provider_malicious_client_trust_key.pem
91+ - provider_malicious_client_trust_cert.pem
92+ - provider_malicious_crl_empty.pem
0 commit comments