CA.PL(1ossl)
π CA.PL(1ossl) β the friendlier-interface-for-OpenSSL-certificate-programs era π
okay bestie, so this is the page for CA.pl, a perl script that's basically the training-wheels-but-make-it-cute front end for openssl(1). β¨
β¨ SYNOPSIS β¨
CA.pl -? | -h | -help
CA.pl -newcert | -newreq | -newreq-nodes | -xsign | -sign | -signCA |
-signcert | -crl | -newca [-extra-cmd parameter]
CA.pl -pkcs12 [certname]
CA.pl -verify certfile ...
CA.pl -revoke certfile [reason]
π DESCRIPTION π
So the CA.pl script is a perl script β literally in the name, iykyk β and what it does is hand the relevant command line arguments over to the openssl(1) command for a bunch of common certificate operations. Its whole personality is simplifying certificate creation and management via some simple options. π¦
It's meant as a simple front end for the openssl(1) program, for a beginner to use. But ngl, its behaviour isn't always what's wanted π β if you want more control over how the certificate commands behave, just call the openssl(1) command directly.
Most of the filenames mentioned below can be modified by editing the CA.pl script. π
Under some environments it may not be possible to run the CA.pl script directly (for example Win32) and the default configuration file location may be wrong. In that case, this command:
perl -S CA.pl
can be used, and the OPENSSL_CONF environment variable can be set to point to the correct path of the configuration file. π
β¨ OPTIONS β¨
-?,-h,-helpβ prints a usage message. that's it, that's the tea π«-newcertβ creates a new self signed certificate. the private key is written to the filenewkey.pemand the request written to the filenewreq.pem. invokesopenssl-req(1). π₯-newreqβ creates a new certificate request. private key goes tonewkey.pem, request goes tonewreq.pem. executesopenssl-req(1)under the hood. β¨-newreq-nodesβ like-newreqexcept the private key will not be encrypted. usesopenssl-req(1). π-newcaβ creates a new CA hierarchy for use with thecaprogram (or the-signcertand-xsignoptions). you get prompted to enter the filename of the CA certificates (which should also contain the private key), or by hitting ENTER details of the CA will be prompted for. the relevant files and directories are created in a directory calleddemoCAin the current directory. usesopenssl-req(1)andopenssl-ca(1). π
lowkey important: if thedemoCAdirectory already exists, then-newcawill not overwrite it and will do nothing π. this can happen if a previous call using the-newcaoption terminated abnormally. to get the correct behaviour, delete the directory if it already exists. ποΈ
-pkcs12β creates a PKCS#12 file containing the user certificate, private key and CA certificate. it expects the user certificate and private key to be in the filenewcert.pemand the CA certificate to be in the filedemoCA/cacert.pem, and it creates a filenewcert.p12. so you can call this command after the-signoption. the PKCS#12 file can be imported directly into a browser. π§ if there's an additional argument on the command line it'll be used as the "friendly name" for the certificate (which is typically displayed in the browser list box), otherwise the name"My Certificate"is used. delegates work toopenssl-pkcs12(1). πΈ-sign,-xsignβ calls theopenssl-ca(1)command to sign a certificate request. expects the request to be in the filenewreq.pem. the new certificate is written to the filenewcert.pemβ except in the case of the-xsignoption, when it's written to standard output. π€-signCAβ same as-signexcept it uses the configuration file sectionv3_ca, and so makes the signed request a valid CA certificate. this is useful when creating an intermediate CA from a root CA. extra params are passed toopenssl-ca(1). π-signcertβ same as-signexcept it expects a self signed certificate to be present in the filenewreq.pem. extra params are passed toopenssl-x509(1)andopenssl-ca(1). π-crlβ generate a CRL. executesopenssl-ca(1). β-revokecertfile [reason] β revoke the certificate contained in the specified certfile. an optional reason may be specified, and it must be one of:unspecified,keyCompromise,CACompromise,affiliationChanged,superseded,cessationOfOperation,certificateHold, orremoveFromCRL. leveragesopenssl-ca(1). π«-verifyβ verifies certificates against the CA certificate fordemoCA. if no certificates are specified on the command line it tries to verify the filenewcert.pem. invokesopenssl-verify(1). π-extra-cmdparameter β for each optionextra-cmd, pass parameter to theopenssl(1)sub-command with the same name ascmd, if that sub-command is invoked. for example, ifopenssl-req(1)is invoked, the parameter given with-extra-reqwill be passed to it. for multi-word parameters, either repeat the option or quote the parameters so it looks like one word to your shell. see the individual command documentation for more information. π«Ά
π EXAMPLES π
Create a CA hierarchy β literally one line, slay:
CA.pl -newca
Complete certificate creation example: create a CA, create a request, sign the request and finally create a PKCS#12 file containing it. the full main-character arc π :
CA.pl -newca
CA.pl -newreq
CA.pl -sign
CA.pl -pkcs12 "My Test Certificate"
π¦ ENVIRONMENT π¦
- the environment variable
OPENSSLmay be used to specify the name of the OpenSSL program. it can be a full pathname, or a relative one. π£οΈ - the environment variable
OPENSSL_CONFIGmay be used to specify a configuration option and value to thereqandcacommands invoked by this script. its value should be the option and pathname, as in"-config /path/to/conf-file". ποΈ
π SEE ALSO π
openssl(1), openssl-x509(1), openssl-ca(1), openssl-req(1), openssl-pkcs12(1), config(5)
π COPYRIGHT π
Copyright 2000-2026 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>.
okay that's the whole page bestie, go forth and certify πΈ β this was version 3.5.6, dated 2026-04-07, from the CA.PL(1ossl) manual. periodt. π
π¦ where this page comes from
- freebsd 15.1: base 15.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms