Prepare directory structure and stating files
mkdir -p {root-ca,sub-ca,signing-ca,app-ca}/{certs,crl,csr,db,private}
touch {root-ca,sub-ca,signing-ca,app-ca}/db/index
openssl rand -hex 16 > {root-ca,sub-ca,signing-ca,app-ca}/db/serial
echo 1000 > {root-ca,sub-ca,signing-ca,app-ca}/db/crlnumber
Create csr
openssl req -new \
-config root-ca.conf \
-out root-ca/csr/root-ca.csr \
-keyout root-ca/private/root-ca.key
Self sign the root csr
openssl ca -selfsign \
-config root-ca.conf \
-in root-ca/csr/root-ca.csr \
-out root-ca/certs/root-ca.crt \
-extensions v3_ca_ext
generate the root ca crl
openssl ca -gencrl \
-config root-ca.conf \
-out root-ca/crl/root-ca.crl
Generate cert for root CA OCSP
openssl req -new \
-newkey rsa:2048 \
-subj "/C=NL/ST=Zuid-Holland/L=Rotterdam/O=Remalan.COM/OU=Security/CN=OCSP Root Responder/[email protected]" \
-keyout root-ca/private/root-ocsp.key \
-out root-ca/csr/root-ocsp.csr
openssl ca \
-config root-ca.conf \
-in root-ca/csr/root-ocsp.csr \
-out root-ca/certs/root-ocsp.crt \
-extensions ocsp_ext \
-days 30
Run the root CA OCSP
openssl ocsp \
-port 9080
-index root-ca/db/index \
-rsigner root-ca/certs/root-ocsp.crt \
-rkey root-ca/private/root-ocsp.key \
-CA root-ca/certs/root-ca.crt \
-text
Create sub CA csr
openssl req -new \
-config sub-ca.conf \
-out sub-ca/csr/sub-ca.csr \
-keyout sub-ca/private/sub-ca.key
Create a sub CA
openssl ca \
-config root-ca.conf \
-in sub-ca/csr/sub-ca.csr \
-out sub-ca/certs/sub-ca.crt \
-extensions sub_ca_ext
generate the sub CA crl
openssl ca -gencrl \
-config sub-ca.conf \
-out sub-ca/crl/sub-ca.crl
Generate cert for sub CA OCSP
openssl req -new \
-newkey rsa:2048 \
-subj "/C=NL/ST=Zuid-Holland/L=Rotterdam/O=Remalan.COM/OU=Security/CN=OCSP Sub Responder/[email protected]" \
-keyout sub-ca/private/sub-ocsp.key \
-out sub-ca/csr/sub-ocsp.csr
openssl ca \
-config sub-ca.conf \
-in sub-ca/csr/sub-ocsp.csr \
-out sub-ca/certs/sub-ocsp.crt \
-extensions ocsp_ext \
-days 15
Create signing CA csr
openssl req -new \
-config signing-ca.conf \
-out signing-ca/csr/signing-ca.csr \
-keyout signing-ca/private/signing-ca.key
Create signing CA
openssl ca \
-config sub-ca.conf \
-in signing-ca/csr/signing-ca.csr \
-out signing-ca/certs/signing-ca.crt \
-extensions sign_ca_ext
generate the signing CA crl
openssl ca -gencrl \
-config signing-ca.conf \
-out signing-ca/crl/signing-ca.crl
Generate cert for signing CA OCSP
openssl req -new \
-newkey rsa:2048 \
-subj "/C=NL/ST=Zuid-Holland/L=Rotterdam/O=Remalan.COM/OU=Security/CN=OCSP Signing Responder/[email protected]" \
-keyout signing-ca/private/signing-ocsp.key \
-out signing-ca/csr/signing-ocsp.csr
openssl ca \
-config signing-ca.conf \
-in signing-ca/csr/signing-ocsp.csr \
-out signing-ca/certs/signing-ocsp.crt \
-extensions ocsp_ext \
-days 15
Create app CA csr
openssl req -new -nodes \
-config signing-ca.conf \
-out app-ca/csr/app-ca.csr \
-keyout app-ca/private/app-ca.key
Create app CA
openssl ca \
-config signing-ca.conf \
-in app-ca/csr/app-ca.csr \
-out app-ca/certs/app-ca.crt \
-extensions app_ca_ext
Helm
tiller pair
openssl genrsa -out signing-ca/private/tiller.key 4096
openssl req -new \
-config signing-ca.conf \
-key signing-ca/private/tiller.key \
-out signing-ca/csr/tiller.csr
openssl ca \
-config signing-ca.conf \
-in signing-ca/csr/tiller.csr \
-out signing-ca/certs/tiller.crt \
-extensions server_ext
helm pair
openssl genrsa -out signing-ca/private/helm.key 4096
openssl req -new \
-config signing-ca.conf \
-key signing-ca/private/helm.key \
-out signing-ca/csr/helm.csr
openssl ca \
-config signing-ca.conf \
-in signing-ca/csr/helm.csr \
-out signing-ca/certs/helm.crt \
-extensions client_ext