#!/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