PKI(1)
π NAME π
pki β the Simple public key infrastructure (PKI) management tool from strongSwan. Yes bestie, it does exactly what it says on the tin. π
β¨ SYNOPSIS β¨
pki command [option ...]
pki -h | --help
π DESCRIPTION π
Okay so pki is literally a whole suite of commands that let you manage a simple public key infrastructure (PKI). It can:
- 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. Iconic. π
The pki command also supports certificate enrollment via the Simple Certificate Enrollment Protocol (SCEP) as defined by RFC 8894, replacing the obsoleted ipsec scepclient tool. Additionally the Enrollment over Secure Transport (EST) protocol (RFC 7030) is supported, too. Slay. β¨
The latest feature is an Online Certificate Status Protocol (OCSP) responder as defined by RFC 6960, interoperating with an OpenXPKI server by directly accessing its internal certificate database. Main character energy fr fr. π
π οΈ COMMANDS π οΈ
-h,--helpβ Prints usage information and a short summary of the available commands.-g,--genβ Generate a new private key.-s,--selfβ Create a self-signed certificate.-i,--issueβ Issue a certificate using a CA certificate and key.-c,--signcrlβ Issue a CRL using a CA certificate and key.-z,--acertβ Issue an attribute certificate.-r,--reqβ Create a PKCS#10 certificate request.-7,--pkcs7β Provides PKCS#7 wrap/unwrap functions.-k,--keyidβ Calculate key identifiers of a key or certificate.-a,--printβ Print a credential (key, certificate etc.) in human readable form.-d,--dnβ Extract the subject DN of an X.509 certificate.-p,--pubβ Extract a public key from a private key or certificate.-V,--verifyβ Verify a certificate using a CA certificate.-S,--scepβ Enroll an X.509 certificate with a SCEP server.-C,--scepcaβ Get CA [and RA] certificate[s] from a SCEP server.-E,--estβ Enroll an X.509 certificate with an EST server.-e,--estcaβ Get CA certificate[s] from an EST server.-o,--ocspβ OCSP request parser and OCSP responder.
βοΈ GENERAL OPTIONS βοΈ
-v,--debugβ set debug level, default: 1-+,--optionsβ read command line options from file
π EXAMPLES π
πΈ Generating a CA Certificate πΈ
The first step is to generate a private key using the --gen command. By default this generates a 2048-bit RSA key.
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
π¦ Generating End-Entity Certificates π¦
With the root CA certificate and key at hand end-entity certificates for clients and servers can be issued. Similarly intermediate CA certificates can be issued, which in turn can issue other certificates. To generate a certificate for a server, we start by generating a private key.
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.
π Generating Certificate Revocation Lists (CRL) π
If end-entity certificates have to be revoked, CRLs may be generated using the --signcrl 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.
π SEE ALSO π
pki --gen(1), pki --self(1), pki --issue(1), pki --signcrl(1), pki --acert(1), pki --req(1), pki --pkcs7(1), pki --keyid(1), pki --print(1), pki --dn(1), pki --pub(1), pki --verify(1), pki --scep(1) pki --scepca(1) pki --est(1) pki --estca(1) pki --ocsp(1)
Okay thatβs the whole page, bestie. This iconic pki manual comes from strongSwan 6.1.0, dated 2023-10-20. Go manage that PKI and slay. πβ¨
π¦ where this page comes from
- arch rolling: strongswan 6.1.0-2 Β· GPL-2.0-only
- nixos 26.05: strongswan 6.1.0
- nixpkgs unstable: strongswan 6.1.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms