#!/bin/sh # # This is a script to help generate certificates for use with TLS. # # NOTE: you must make differences to the certificate fields # (e.g. the e-mail address), otherwise the new certificate # overwrites the previously created and the script fails. # CA="CA_nlab" PREFIX=/usr/local/etc/openssl CONFIG=${PREFIX}/openssl.conf CA_DIR=${PREFIX}/${CA} ## ## Initialize ## rm -rf ${CA_DIR} root* cert* *.pem *.der # Create directories mkdir ${CA_DIR} mkdir ${CA_DIR}/certs mkdir ${CA_DIR}/crl mkdir ${CA_DIR}/newcerts mkdir ${CA_DIR}/private touch ${CA_DIR}/index.txt ## ## CA ## # Create a new CA certificate and private key openssl req -config ${CONFIG} \ -new \ -x509 \ -keyout ${CA_DIR}/private/cakey.pem \ -out ${CA_DIR}/cacert.pem \ -days 730 \ -passout pass:pw4ca # Create CA certificate serial number openssl x509 \ -in ${CA_DIR}/cacert.pem \ -noout \ -next_serial \ -out ${CA_DIR}/serial ## ## CLIENT ## # Create a client certificate request and private key openssl req -config ${CONFIG} \ -new \ -keyout clientkey.pem \ -out newreq.pem \ -days 730 \ -passout pass:pw4client # Sign client certificate with CA's private key openssl ca -config ${CONFIG} \ -policy policy_anything \ -key pw4ca \ -out clientcert.pem \ -passin pass:pw4client \ -infiles newreq.pem rm -f newreq.pem # Export PKCS#12 version of the client certificate openssl pkcs12 \ -export \ -in clientcert.pem \ -inkey clientkey.pem \ -out clientcert.p12 \ -clcerts \ -passin pass:pw4client \ -passout pass:pw4client rm -f clientcert.pem openssl pkcs12 \ -in clientcert.p12 \ -out clientcert.pem \ -passin pass:pw4client \ -passout pass:pw4client openssl x509 \ -inform PEM \ -outform DER \ -in clientcert.pem \ -out clientcert.der ## ## SERVER ## # Create a server certificate request and private key openssl req -config ${CONFIG} \ -new \ -keyout serverkey.pem \ -out newreq.pem \ -days 730 \ -passout pass:pw4server # Sign server certificate with CA's private key openssl ca -config ${CONFIG} \ -policy policy_anything \ -key pw4ca \ -out servercert.pem \ -passin pass:pw4server \ -infiles newreq.pem rm -f newreq.pem # Export PKCS#12 version of the server certificate openssl pkcs12 \ -export \ -in servercert.pem \ -inkey serverkey.pem \ -out servercert.p12 \ -clcerts \ -passin pass:pw4server \ -passout pass:pw4server rm -f servercert.pem openssl pkcs12 \ -in servercert.p12 \ -out servercert.pem \ -passin pass:pw4server \ -passout pass:pw4server openssl x509 \ -inform PEM \ -outform DER \ -in servercert.pem \ -out servercert.der