werty1st
7/25/2016 - 8:56 PM

Create an SSL certificate

Create an SSL certificate

.PHONY: clean default

FQDN ?= 127.0.0.1

default: SERVER.crt
clean:
	rm -f openssl.conf
	rm -f ROOT.*
	rm -f SERVER.*

openssl.conf:
	cat /etc/ssl/openssl.cnf > openssl.conf
	echo "[ san_env ]" >> openssl.conf
	echo "subjectAltName=$$""{ENV::SAN}" >> openssl.conf

ROOT.key:
	openssl genrsa 4096 > ROOT.key

ROOT.crt: ROOT.key
	openssl req \
		-new \
		-x509 \
		-nodes \
		-sha256 \
		-key ROOT.key \
		-days 365 \
		-subj "/C=AU/CN=example" \
		-out ROOT.crt

SERVER.csr: openssl.conf
	SAN=IP:$(FQDN) openssl req \
		-reqexts san_env \
		-config openssl.conf \
		-newkey rsa:4096 \
		-nodes -sha256 \
		-keyout SERVER.key \
		-subj "/C=AU/CN=$(FQDN)" \
		-out SERVER.csr

SERVER.crt: openssl.conf ROOT.key ROOT.crt SERVER.csr
	SAN=IP:$(FQDN) openssl x509 \
		-req \
		-extfile openssl.conf \
		-extensions san_env \
		-days 365 \
		-in SERVER.csr \
		-CA ROOT.crt \
		-CAkey ROOT.key \
		-CAcreateserial \
		-out SERVER.crt