Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
BUILD | D | 04-Jul-2025 | 1,015 | 36 | 33 | |
README | D | 04-Jul-2025 | 6 KiB | 164 | 118 | |
badclient.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
badclient.pem | D | 04-Jul-2025 | 1.3 KiB | 23 | 22 | |
badserver.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
badserver.pem | D | 04-Jul-2025 | 1.3 KiB | 23 | 22 | |
ca-openssl.cnf | D | 04-Jul-2025 | 541 | 18 | 15 | |
ca.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
ca.pem | D | 04-Jul-2025 | 1.2 KiB | 21 | 20 | |
client-with-spiffe-openssl.cnf | D | 04-Jul-2025 | 305 | 16 | 12 | |
client-with-spiffe.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
client-with-spiffe.pem | D | 04-Jul-2025 | 1.4 KiB | 24 | 23 | |
client.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
client.pem | D | 04-Jul-2025 | 1.1 KiB | 21 | 20 | |
client1.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
client1.pem | D | 04-Jul-2025 | 1.1 KiB | 21 | 20 | |
client2.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
client2.pem | D | 04-Jul-2025 | 1.1 KiB | 21 | 20 | |
intermediate.cnf | D | 04-Jul-2025 | 303 | 13 | 10 | |
intermediate_ca.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
intermediate_ca.pem | D | 04-Jul-2025 | 1.4 KiB | 24 | 23 | |
leaf_and_intermediate_chain.pem | D | 04-Jul-2025 | 2.6 KiB | 44 | 43 | |
leaf_signed_by_intermediate.cnf | D | 04-Jul-2025 | 283 | 13 | 10 | |
leaf_signed_by_intermediate.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
leaf_signed_by_intermediate.pem | D | 04-Jul-2025 | 1.2 KiB | 21 | 20 | |
multi-domain-openssl.cnf | D | 04-Jul-2025 | 928 | 34 | 30 | |
multi-domain.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
multi-domain.pem | D | 04-Jul-2025 | 1.4 KiB | 25 | 24 | |
server0.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
server0.pem | D | 04-Jul-2025 | 1.2 KiB | 21 | 20 | |
server1-openssl.cnf | D | 04-Jul-2025 | 790 | 27 | 23 | |
server1.key | D | 04-Jul-2025 | 1.7 KiB | 29 | 28 | |
server1.pem | D | 04-Jul-2025 | 1.3 KiB | 23 | 22 |
README
1The test credentials (CONFIRMEDTESTKEY) have been generated with the following 2commands: 3 4Bad credentials (badclient.* / badserver.*): 5============================================ 6 7These are self-signed certificates: 8 9$ openssl req -x509 -newkey rsa:2048 -keyout badserver.key -out badserver.pem \ 10 -days 3650 -nodes 11 12When prompted for certificate information, everything is default except the 13common name which is set to badserver.test.google.com. 14 15 16Valid test credentials: 17======================= 18 19The ca is self-signed: 20---------------------- 21 22$ openssl req -x509 -new -newkey rsa:2048 -nodes -keyout ca.key -out ca.pem \ 23 -config ca-openssl.cnf -days 3650 -extensions v3_req 24When prompted for certificate information, everything is default. 25 26client is issued by CA: 27----------------------- 28 29$ openssl genrsa -out client.key.rsa 2048 30$ openssl pkcs8 -topk8 -in client.key.rsa -out client.key -nocrypt 31$ openssl req -new -key client.key -out client.csr 32 33When prompted for certificate information, everything is default except the 34common name which is set to testclient. 35 36$ openssl x509 -req -CA ca.pem -CAkey ca.key -CAcreateserial -in client.csr \ 37 -out client.pem -days 3650 38 39client1 is issued by CA: 40----------------------- 41 42$ openssl genrsa -out client1.key.rsa 2048 43$ openssl pkcs8 -topk8 -in client1.key.rsa -out client1.key -nocrypt 44$ openssl req -new -key client1.key -out client1.csr 45 46When prompted for certificate information, everything is default except the 47common name which is set to testclient1. 48 49$ openssl x509 -req -CA ca.pem -CAkey ca.key -CAcreateserial -in client1.csr \ 50 -out client1.pem -days 3650 51 52client2 is issued by CA: 53----------------------- 54 55$ openssl genrsa -out client2.key.rsa 2048 56$ openssl pkcs8 -topk8 -in client2.key.rsa -out client2.key -nocrypt 57$ openssl req -new -key client2.key -out client2.csr 58 59When prompted for certificate information, everything is default except the 60common name which is set to testclient2. 61 62$ openssl x509 -req -CA ca.pem -CAkey ca.key -CAcreateserial -in client2.csr \ 63 -out client2.pem -days 3650 64 65client-with-spiffe is issued by CA: 66----------------------- 67 68$ openssl genrsa -out client-with-spiffe.key.rsa 2048 69$ openssl pkcs8 -topk8 -in client-with-spiffe.key.rsa -out client-with-spiffe.key -nocrypt 70$ openssl req -new -key client-with-spiffe.key -out client-with-spiffe.csr -config client-with-spiffe-openssl.cnf 71$ openssl x509 -req -CA ca.pem -CAkey ca.key -CAcreateserial -in client-with-spiffe.csr \ 72 -out client-with-spiffe.pem -extensions v3_req -extfile client-with-spiffe-openssl.cnf -days 3650 73 74server0 is issued by CA: 75------------------------ 76 77$ openssl genrsa -out server0.key.rsa 2048 78$ openssl pkcs8 -topk8 -in server0.key.rsa -out server0.key -nocrypt 79$ openssl req -new -key server0.key -out server0.csr 80 81When prompted for certificate information, everything is default except the 82common name which is set to *.test.google.com.au. 83 84$ openssl x509 -req -CA ca.pem -CAkey ca.key -CAcreateserial -in server0.csr \ 85 -out server0.pem -days 3650 86 87server1 is issued by CA with a special config for subject alternative names: 88---------------------------------------------------------------------------- 89 90$ openssl genrsa -out server1.key.rsa 2048 91$ openssl pkcs8 -topk8 -in server1.key.rsa -out server1.key -nocrypt 92$ openssl req -new -key server1.key -out server1.csr -config server1-openssl.cnf 93 94When prompted for certificate information, everything is default except the 95common name which is set to *.test.google.com. 96 97$ openssl x509 -req -CA ca.pem -CAkey ca.key -CAcreateserial -in server1.csr \ 98 -out server1.pem -extensions req_ext -extfile server1-openssl.cnf -days 3650 99 100multi-domain is a self-signed certificate having multiple subject alternative 101names: 102---------------------------------------------------------------------------- 103 104$ openssl genrsa -out multi-domain.key.rsa 2048 105$ openssl pkcs8 -topk8 -in multi-domain.key.rsa -out multi-domain.key -nocrypt 106$ openssl req -new -key multi-domain.key -out multi-domain.csr -config 107multi-domain-openssl.cnf 108$ openssl req -x509 -new -extensions v3_req -key multi-domain.key -out 109multi-domain.pem -days 3650 -config multi-domain-openssl.cnf 110 111 112Generate a chain with a leaf cert signed by an intermediate CA 113---------------------------------------------------------------------------- 114 115The fully verified chain will be root_ca -> intermediate_ca -> leaf 116 117Generating the intermediate CA 118$ openssl genrsa -out temp.rsa 2048 119$ openssl pkcs8 -topk8 -in temp.rsa -out intermediate_ca.key -nocrypt 120$ rm temp.rsa 121$ openssl req -key intermediate_ca.key -new -out temp.csr -config intermediate.cnf 122$ openssl x509 -req -days 3650 -in temp.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out intermediate_ca.pem -extfile intermediate.cnf -extensions 'v3_req' 123 124Generating the leaf and chain 125$ openssl genrsa -out temp.rsa 2048 126$ openssl pkcs8 -topk8 -in temp.rsa -out leaf_signed_by_intermediate.key -nocrypt 127$ openssl req -key leaf_signed_by_intermediate.key -new -out temp.csr -config leaf_signed_by_intermediate.cnf 128$ openssl x509 -req -days 3650 -in temp.csr -CA intermediate_ca.pem -CAkey intermediate_ca.key -CAcreateserial -out leaf_signed_by_intermediate.pem -extfile leaf_signed_by_intermediate.cnf -extensions 'v3_req' 129$ cat leaf_signed_by_intermediate.pem intermediate_ca.pem > leaf_and_intermediate_chain.pem 130 131 132 133Clean up: 134--------- 135$ rm *.rsa 136$ rm *.csr 137$ rm ca.srl 138 139Sync up with other repositories 140=============================== 141 142Copies of these keys exist in multiple locations across all the grpc repos 143(e.g., see the following partial list). You need to be careful when updating 144the keys. 145 146grpc-dart/interop/ 147grpc-dotnet/testassets/Certs/InteropTests/ 148grpc-go/testdata/ 149grpc-java/testing/src/main/resources/certs/ 150grpc-node/test/data/ 151src/objective-c/tests/TestCertificates.bundle/ 152src/php/tests/data/ 153src/python/grpcio_tests/tests/interop/credentials/ 154src/python/grpcio_tests/tests/unit/credentials/ 155src/ruby/spec/testdata/ 156test/core/end2end/data/ 157 158The following keys/certs are not distributed through multiple grpc repos yet, 159since they are only used in grpc core tests: 160 161multi-domain.* 162client1.* 163client2.* 164