OPENSSL-SPKAC(1SSL)
π openssl-spkac(1SSL) β the SPKAC printing & generating command
okay bestie so this is openssl-spkac, a page from the OpenSSL manual set, and it's literally all about SPKAC stuff β printing them, generating them, verifying them. Netscape-era energy but make it useful. π¦
β¨ SYNOPSIS β¨
openssl spkac [-help] [-in filename] [-out filename] [-digest digest]
[-key filename|uri] [-keyform DER|PEM|P12] [-passin arg] [-challenge
string] [-pubkey] [-spkac spkacname] [-spksect section] [-noout]
[-verify] [-provider name] [-provider-path path] [-provparam
[name:]key=value] [-propquery propq]
πΈ DESCRIPTION πΈ
This command handles Netscape signed public key and challenge (SPKAC) files. It can do three (3) whole things and it eats every time:
- print out their contents π
- verify the signature π
- produce its own SPKACs from a private key you hand it π
it's giving "small command, big responsibilities" fr fr.
π OPTIONS π
-helpβ prints out a usage message. classic. the little "hey here's how u use me" moment π-in filenameβ tells it which input filename to read from. no option specified? it reads from standard input instead, no stress. heads up tho: this gets ignored if you use the-keyoption.-out filenameβ which output filename to write to. default is standard output, so if u say nothing it just talks to ur terminal π«Ά-digest digestβ use the specified digest to sign a created SPKAC file. the default digest algorithm isMD5(yes bestie, MD5, we said what we said) π-key filename|uriβ create an SPKAC file using the private key specified by filename or uri. and real talk: the-in,-noout,-spksectand-verifyoptions are ignored if they're present alongside it. they simply do not get a turn π-keyform DER|PEM|P12β the key format. unspecified by default. seeopenssl-format-options(1)for details β¨-passin argβ the input file password source. for more info about the format of arg, seeopenssl-passphrase-options(1)π-challenge stringβ specifies the challenge string, if an SPKAC is being created. this is ur little "prove it's u" note π€-spkac spkacnameβ lets you use an alternative name for the variable containing the SPKAC. the default is"SPKAC". and no cap, this option affects both generated and input SPKAC files π-spksect sectionβ allows an alternative name for the section containing the SPKAC. the default is the default section.-nooutβ don't output the text version of the SPKAC. (not used if an SPKAC is being created, soz) π-pubkeyβ output the public key of an SPKAC. (also not used if an SPKAC is being created, same vibe) π-verifyβ verifies the digital signature on the supplied SPKAC. the vibe check for signatures, basically β-provider name-provider-path path-provparam [name:]key=value-propquery propqβ see "Provider Options" inopenssl(1),provider(7), andproperty(7). that's the whole lore drop, go read those π§
π EXAMPLES π
Print out the contents of an SPKAC:
openssl spkac -in spkac.cnf
Verify the signature of an SPKAC:
openssl spkac -in spkac.cnf -noout -verify
Create an SPKAC using the challenge string "hello":
openssl spkac -key key.pem -challenge hello -out spkac.cnf
Example of an SPKAC, (long lines split up for clarity):
SPKAC=MIG5MGUwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA\
1cCoq2Wa3Ixs47uI7FPVwHVIPDx5yso105Y6zpozam135a\
8R0CpoRvkkigIyXfcCjiVi5oWk+6FfPaD03uPFoQIDAQAB\
FgVoZWxsbzANBgkqhkiG9w0BAQQFAANBAFpQtY/FojdwkJ\
h1bEIYuc2EeM2KHTWPEepWYeawvHD0gQ3DngSC75YCWnnD\
dq+NQ3F+X4deMx9AaEglZtULwV4=
π NOTES π
A created SPKAC with suitable DN components appended can be fed to openssl-ca(1). (yes, it's a whole pipeline, slay)
SPKACs are typically generated by Netscape when a form is submitted containing the KEYGEN tag as part of the certificate enrollment process. history class but make it crypto π
The challenge string permits a primitive form of proof of possession of the private key. by checking the SPKAC signature and a random challenge string, some guarantee is given that the user knows the private key corresponding to the public key being certified. this is important in some applications. without this, it's possible for a previous SPKAC to be used in a "replay attack". so like... don't skip the challenge, bestie. that's the whole point π
π«Ά SEE ALSO π«Ά
β HISTORY β
- The
-digestoption was added in OpenSSL 3.0 β¨ - The
-engineoption was removed in OpenSSL 4.0. it's gone bestie, we don't talk about it π
π COPYRIGHT π
Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>. (yes that's a link, go read it, it's the law and also it's giving responsible πΈ)
and that's the whole page, bestie!! this lovely little writeup is from OpenSSL 4.0.3, dated 2026-09-29, and it lives under the manual name OPENSSL-SPKAC(1SSL). go forth and process those SPKACs πβ¨π
π¦ where this page comes from
- ubuntu stonking: openssl 4.0.3-1ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms