Skip to content

Instantly share code, notes, and snippets.

@farthinder
Created January 19, 2023 09:33
Show Gist options
  • Save farthinder/9df3019e2e01cdd167dd02abf7d5f903 to your computer and use it in GitHub Desktop.
Save farthinder/9df3019e2e01cdd167dd02abf7d5f903 to your computer and use it in GitHub Desktop.
Creates A ca cert, a server cert and a client cert
#!/bin/bash
CA=ca.domain.se
HOST=docker.domain.se
CLIENT=client.domain.se
mkdir -p out
cd out
openssl req -new -newkey rsa:3096 -days 3650 -nodes -x509 -keyout ca.key -out ca.pem -subj "/CN=$CA"
echo ---- Server cert -----
echo Create Private
openssl genrsa -out server-key.pem 4096
echo Create Signing Request
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
echo Sign with CA
echo subjectAltName = DNS:$HOST,IP:127.0.0.1 >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca.key \
-CAcreateserial -out server-cert.pem -extfile extfile.cnf
echo ---- Client cert ----
echo Create Private
openssl genrsa -out key.pem 4096
echo Create Signing Request
openssl req -subj "/CN=$CLIENT" -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile-client.cnf
echo Sign with CA
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca.key \
-CAcreateserial -out cert.pem -extfile extfile-client.cnf
echo Cleaning up
rm *.cnf
rm *.csr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment