You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.9 KiB
72 lines
1.9 KiB
#!/bin/bash |
|
|
|
create_ssl_config() { |
|
cat > openssl.cnf <<_END_ |
|
subjectAltName = @alt_names |
|
[alt_names] |
|
DNS.1 = example.com |
|
DNS.2 = localhost |
|
[ server_cert ] |
|
keyUsage = digitalSignature, keyEncipherment |
|
nsCertType = server |
|
[ client_cert ] |
|
keyUsage = digitalSignature, keyEncipherment |
|
nsCertType = client |
|
_END_ |
|
|
|
} |
|
|
|
generate_ca_cert() { |
|
local location=$1 |
|
|
|
mkdir -p ${location} |
|
|
|
openssl genrsa -out ${location}/test-ca.key 4096 |
|
openssl req -key ${location}/test-ca.key -out ${location}/test-ca.crt \ |
|
-x509 -new -nodes -sha256 -days 3650 \ |
|
-subj "/O=Spring Boot Test/CN=Certificate Authority" \ |
|
-addext "subjectAltName=DNS:hello.example.com,DNS:hello-alt.example.com" |
|
} |
|
|
|
generate_cert() { |
|
local location=$1 |
|
local caLocation=$2 |
|
local hostname=$3 |
|
|
|
local keyfile=${location}/test-${hostname}-server.key |
|
local certfile=${location}/test-${hostname}-server.crt |
|
|
|
mkdir -p ${location} |
|
|
|
openssl genrsa -out ${keyfile} 2048 |
|
openssl req -key ${keyfile} \ |
|
-new -sha256 \ |
|
-subj "/O=Spring Boot Test/CN=${hostname}.example.com" \ |
|
-addext "subjectAltName=DNS:${hostname}.example.com" | \ |
|
openssl x509 -req -out ${certfile} \ |
|
-CA ${caLocation}/test-ca.crt -CAkey ${caLocation}/test-ca.key -CAserial ${caLocation}/test-ca.txt -CAcreateserial \ |
|
-sha256 -days 3650 \ |
|
-extfile openssl.cnf \ |
|
-extensions server_cert |
|
} |
|
|
|
if ! command -v openssl &> /dev/null; then |
|
echo "openssl is required" |
|
exit |
|
fi |
|
|
|
mkdir -p certs |
|
|
|
create_ssl_config |
|
generate_ca_cert certs/ca |
|
generate_cert certs/default certs/ca hello |
|
generate_cert certs/alt certs/ca hello-alt |
|
|
|
rm -f openssl.cnf |
|
rm -f certs/ca/test-ca.key certs/ca/test-ca.txt |
|
|
|
cp -r certs/* spring-boot-sni-reactive-app/src/main/resources |
|
cp -r certs/* spring-boot-sni-servlet-app/src/main/resources |
|
cp -r certs/ca/* spring-boot-sni-client-app/src/main/resources/ca |
|
|
|
rm -rf certs
|
|
|