1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
set -eufx
function cleanup()
{
kill -term $SERVER
rm testkey.pem testcert.conf testcert.pem
}
cat > testcert.conf << EOF
[ req ]
default_bits = 2048
default_keyfile = testkey.pem
encrypt_key = no
prompt = no
distinguished_name = cert_dn
x509_extensions = cert_ext
[ cert_dn ]
countryName = GB
commonName = Common Name
[ cert_ext ]
basicConstraints = critical, CA:FALSE
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
EOF
# create a RSAE private key and then generate a self-signed certificate for it
openssl req -provider tpm2 -provider default -propquery '?provider=tpm2' \
-x509 -config testcert.conf -out testcert.pem
# display content of the certificate
openssl x509 -text -noout -in testcert.pem
# start SSL server with RSA-PSS-RSAE signing, port 4431
openssl s_server -provider tpm2 -provider default -propquery '?provider=tpm2' \
-accept 4431 -www -key testkey.pem -cert testcert.pem &
SERVER=$!
trap "cleanup" EXIT
# start SSL client
curl --retry 5 --retry-connrefused --cacert testcert.pem https://localhost:4431/
|