Skip to content

Instantly share code, notes, and snippets.

@oldengremlin
Last active July 12, 2019 13:52
Show Gist options
  • Save oldengremlin/6a6e7b2e580956791d9f75b1a07699e4 to your computer and use it in GitHub Desktop.
Save oldengremlin/6a6e7b2e580956791d9f75b1a07699e4 to your computer and use it in GitHub Desktop.
sslgen-cnf
#!/bin/sh
DAYS=9131
SSLDIR=/etc/ssl
PRIVATE=${SSLDIR}/private; #mkdir -p ${PRIVATE}
PUBLIC=${SSLDIR}/certs; #mkdir -p ${PUBLIC}
SSLGRP=ssl-cert
# Генеруємо свій корньовий сертифікат
ROOTCA=RootCA-OldenGremlin
ROOTCA_CONF=/etc/ssl/${ROOTCA}.conf
ROOT_KEY=${PRIVATE}/${ROOTCA}.key
ROOT_CRT=${PUBLIC}/${ROOTCA}.pem
test -f ${ROOT_KEY} || test -f ${ROOT_CRT} || (
# Формуємо корньовий закритий ключ
openssl genrsa -out ${ROOT_KEY} 4096
# Формуємо корньовий сертифікат
openssl req -x509 -new -nodes -sha256 -config ${ROOTCA_CONF} -key ${ROOT_KEY} -sha256 -days ${DAYS} -out ${ROOT_CRT}
chgrp ${SSLGRP} ${ROOT_KEY}
)
for FCNF in $( find /etc/ssl -name '*.cnf' -type f -print | egrep -v '/openssl.cnf$' ); do
CNF=$( basename -z ${FCNF} )
NF=$( basename -z ${FCNF} .cnf )
echo "${FCNF}\t${CNF}\t${NF}"
DEV_KEY=${PRIVATE}/${NF}.key
DEV_CSR=${PUBLIC}/${NF}.csr
DEV_CRT=${PUBLIC}/${NF}.crt
# Формуємо новий приватний ключ, якщо він не існує або ж будемо використовувати існуючий:
if [ -f ${DEV_KEY} ]; then
KEY_OPT="-key"
else
KEY_OPT="-keyout"
fi
# Сформуємо csr файл (Certificate Signing Request) на підставі ключа
openssl req -new -nodes -sha256 -config ${FCNF} ${KEY_OPT} ${DEV_KEY} -out ${DEV_CSR}
# Випускаємо сертифікат:
openssl x509 -req -days ${DAYS} -in ${DEV_CSR} -CA ${ROOT_CRT} -CAkey ${ROOT_KEY} -CAcreateserial -out ${DEV_CRT}
chgrp ${SSLGRP} ${DEV_KEY}
echo
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment