| #!/bin/bash |
| # Copyright 2025 gRPC authors. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| set -e |
| |
| # Meant to be run from testdata/spiffe_end2end/ |
| # Sets up an intermediate ca, generates certificates, then copies then up and deletes unnecessary files |
| |
| rm -rf intermediate_ca |
| mkdir intermediate_ca |
| cp intermediate.cnf intermediate_ca/ |
| cp spiffe-openssl.cnf intermediate_ca/ |
| pushd intermediate_ca |
| |
| # Generating the intermediate CA |
| openssl genrsa -out temp.rsa 2048 |
| openssl pkcs8 -topk8 -in temp.rsa -out intermediate_ca.key -nocrypt |
| rm temp.rsa |
| openssl req -key intermediate_ca.key -new -out temp.csr -config intermediate.cnf |
| 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' |
| |
| # Generating the leaf and chain |
| openssl genrsa -out temp.rsa 2048 |
| openssl pkcs8 -topk8 -in temp.rsa -out leaf_signed_by_intermediate.key -nocrypt |
| openssl req -new -key leaf_signed_by_intermediate.key -out spiffe-cert.csr \ |
| -subj /C=US/ST=CA/L=SVL/O=gRPC/CN=testserver/ \ |
| -config spiffe-openssl.cnf -reqexts spiffe_server_e2e |
| openssl x509 -req -CA intermediate_ca.pem -CAkey intermediate_ca.key -CAcreateserial \ |
| -in spiffe-cert.csr -out leaf_signed_by_intermediate.pem -extensions spiffe_server_e2e \ |
| -extfile spiffe-openssl.cnf -days 3650 -sha256 |
| cat leaf_signed_by_intermediate.pem intermediate_ca.pem > leaf_and_intermediate_chain.pem |
| |
| popd |
| |
| # Copy files up to the higher directory |
| cp "./intermediate_ca/leaf_signed_by_intermediate.key" ./ |
| cp "./intermediate_ca/leaf_signed_by_intermediate.pem" ./ |
| cp "./intermediate_ca/leaf_and_intermediate_chain.pem" ./ |
| cp "./intermediate_ca/intermediate_ca.key" ./ |
| cp "./intermediate_ca/intermediate_ca.pem" ./ |
| |
| rm ca.srl |
| rm -rf intermediate_ca |