Generate RSA and ECDSA key pairs, create PKCS#10 certificate requests containing subjectAltNames, create X.509 self-signed end-entity and root CA certificates, issue end-entity and intermediate CA certificates signed by the private key of a CA and containing subjectAltNames, CRL distribution points and URIs of OCSP servers. You can also extract raw public keys from private keys, certificate requests and certificates and compute two kinds of SHA-1-based key IDs.
pki --gen > ca_key.der
This key is used to create the self-signed CA certificate, using the --self command. The distinguished name should be adjusted to your needs.
pki --self --ca --in ca_key.der \
--dn "C=CH, O=strongSwan, CN=strongSwan CA" > ca_cert.der
pki --gen > server_key.der
The public key will be included in the certificate so lets extract that from the private key.
pki --pub --in server_key.der > server_pub.der
The following command will use the CA certificate and private key to issue the certificate for this server. Adjust the distinguished name, subjectAltName(s) and flags as needed (check pki --issue(8) for more options).
pki --issue --in server_pub.der --cacert ca_cert.der \
--cakey ca_key.der --dn "C=CH, O=strongSwan, CN=VPN Server" \
--san vpn.strongswan.org --flag serverAuth > server_cert.der
Instead of storing the public key in a separate file, the output of --pub may also be piped directly into the above command.
pki --signcrl --cacert ca_cert.der --cakey ca_key.der \
--reason superseded --cert server_cert.der > crl.der
The certificate given with --cacert must be either a CA certificate or a certificate with the crlSign extended key usage (--flag crlSign). URIs to CRLs may be included in issued certificates with the --crl option.