PKI(1)
π PKI(1) β the strongSwan public key infrastructure tool, but make it make sense π
okay bestie, listen. this is pki, the strongSwan command. it's a whole suite of commands that lets you run a simple public key infrastructure, and honestly? it's iconic. no cap.
β¨ SYNOPSIS β¨
pki command [option ...]
pki -h | --help
πΈ DESCRIPTION πΈ
so pki is literally a suite of commands for managing a simple public key infrastructure (PKI). that's the whole vibe.
here's what you can do with it, and i'm gonna list it all because you deserve the full picture:
- 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 those can contain subjectAltNames, CRL distribution points, and URIs of OCSP servers
- extract raw public keys from private keys, certificate requests and certificates
- compute two kinds of SHA-1-based key IDs
periodt. that's the feature list.
the pki command also supports certificate enrollment via the Simple Certificate Enrollment Protocol (SCEP) as defined by RFC 8894 β which replaces the obsoleted ipsec scepclient tool, so if you were still using that, bestie, it's giving outdated. additionally, the Enrollment over Secure Transport (EST) protocol (RFC 7030) is supported, too. we love options. π
and the latest feature β the newest main character β is an Online Certificate Status Protocol (OCSP) responder as defined by RFC 6960, which interoperates with an OpenXPKI server by directly accessing its internal certificate database. that's highkey wild and i'm obsessed.
π COMMANDS π
-h,--helpβ prints usage information plus a short summary of the available commands. your lil cheat sheet.-g,--genβ generate a new private key. the origin story.-s,--selfβ create a self-signed certificate. it's giving "i define myself."-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
first step, bestie: generate a private key using the --gen command. by default this generates a 2048-bit RSA key. (yes, 2048. it's the default. don't come for me.)
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 β that's on you, i can't pick your DN.
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. it's giving generational wealth, but for certs. π§
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. efficiency queen behavior. π
π Generating Certificate Revocation Lists (CRL)
if end-entity certificates have to be revoked, CRLs may be generated using the --signcrl command. sorry not sorry, that cert is over.
pki --signcrl --cacert ca_cert.der --cakey ca_key.der \
--reason superseded --cert server_cert.der > crl.der
β οΈ okay this part matters: the certificate given with--cacertmust be either a CA certificate or a certificate with thecrlSignextended key usage (--flag crlSign). no shortcuts, bestie, the rules are the rules.
URIs to CRLs may be included in issued certificates with the --crl option. cute, right?
π 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 and that's the whole page, babe π«Ά this manual is for strongSwan version 6.0.7, dated 2023-10-20. go forth and issue certs responsibly. mwah πβ¨π
π¦ where this page comes from
- fedora 43: strongswan 6.0.7-2.fc43 Β· GPL-2.0-or-later
- fedora 44: strongswan 6.0.7-4.fc44 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms