mirror of https://github.com/openssl/openssl.git
				
				
				
			
		
			
				
	
	
		
			200 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
=pod
 | 
						|
 | 
						|
=head1 NAME
 | 
						|
 | 
						|
CA.pl - friendlier interface for OpenSSL certificate programs
 | 
						|
 | 
						|
=head1 SYNOPSIS
 | 
						|
 | 
						|
B<CA.pl>
 | 
						|
B<-?> |
 | 
						|
B<-h> |
 | 
						|
B<-help>
 | 
						|
 | 
						|
B<CA.pl>
 | 
						|
B<-newcert> |
 | 
						|
B<-newreq> |
 | 
						|
B<-newreq-nodes> |
 | 
						|
B<-xsign> |
 | 
						|
B<-sign> |
 | 
						|
B<-signCA> |
 | 
						|
B<-signcert> |
 | 
						|
B<-crl> |
 | 
						|
B<-newca>
 | 
						|
[B<-extra-I<cmd>> I<parameter>]
 | 
						|
 | 
						|
B<CA.pl> B<-pkcs12> [I<certname>]
 | 
						|
 | 
						|
B<CA.pl> B<-verify> I<certfile> ...
 | 
						|
 | 
						|
B<CA.pl> B<-revoke> I<certfile> [I<reason>]
 | 
						|
 | 
						|
=head1 DESCRIPTION
 | 
						|
 | 
						|
The B<CA.pl> script is a perl script that supplies the relevant command line
 | 
						|
arguments to the L<openssl(1)> command for some common certificate operations.
 | 
						|
It is intended to simplify the process of certificate creation and management
 | 
						|
by the use of some simple options.
 | 
						|
 | 
						|
The script is intended as a simple front end for the L<openssl(1)> program for
 | 
						|
use by a beginner. Its behaviour isn't always what is wanted. For more control
 | 
						|
over the behaviour of the certificate commands call the L<openssl(1)> command
 | 
						|
directly.
 | 
						|
 | 
						|
Most of the filenames mentioned below can be modified by editing the
 | 
						|
B<CA.pl> script.
 | 
						|
 | 
						|
Under some environments it may not be possible to run the B<CA.pl> script
 | 
						|
directly (for example Win32) and the default configuration file location may
 | 
						|
be wrong. In this case the command:
 | 
						|
 | 
						|
 perl -S CA.pl
 | 
						|
 | 
						|
can be used and the B<OPENSSL_CONF> environment variable can be set to point to
 | 
						|
the correct path of the configuration file.
 | 
						|
 | 
						|
=head1 OPTIONS
 | 
						|
 | 
						|
=over 4
 | 
						|
 | 
						|
=item B<-?>, B<-h>, B<-help>
 | 
						|
 | 
						|
Prints a usage message.
 | 
						|
 | 
						|
=item B<-newcert>
 | 
						|
 | 
						|
Creates a new self signed certificate. The private key is written to the file
 | 
						|
F<newkey.pem> and the request written to the file F<newreq.pem>.
 | 
						|
Invokes L<openssl-req(1)>.
 | 
						|
 | 
						|
=item B<-newreq>
 | 
						|
 | 
						|
Creates a new certificate request. The private key is written to the file
 | 
						|
F<newkey.pem> and the request written to the file F<newreq.pem>.
 | 
						|
Executes L<openssl-req(1)> under the hood.
 | 
						|
 | 
						|
=item B<-newreq-nodes>
 | 
						|
 | 
						|
Is like B<-newreq> except that the private key will not be encrypted.
 | 
						|
Uses L<openssl-req(1)>.
 | 
						|
 | 
						|
=item B<-newca>
 | 
						|
 | 
						|
Creates a new CA hierarchy for use with the B<ca> program (or the B<-signcert>
 | 
						|
and B<-xsign> options). The user is 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 called F<demoCA> in the current directory.
 | 
						|
Uses L<openssl-req(1)> and L<openssl-ca(1)>.
 | 
						|
 | 
						|
If the F<demoCA> directory already exists then the B<-newca> command will not
 | 
						|
overwrite it and will do nothing. This can happen if a previous call using
 | 
						|
the B<-newca> option terminated abnormally. To get the correct behaviour
 | 
						|
delete the directory if it already exists.
 | 
						|
 | 
						|
=item B<-pkcs12>
 | 
						|
 | 
						|
Create 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
 | 
						|
file F<newcert.pem> and the CA certificate to be in the file F<demoCA/cacert.pem>,
 | 
						|
it creates a file F<newcert.p12>. This command can thus be called after the
 | 
						|
B<-sign> option. The PKCS#12 file can be imported directly into a browser.
 | 
						|
If there is an additional argument on the command line it will 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 to L<openssl-pkcs12(1)>.
 | 
						|
 | 
						|
=item B<-sign>, B<-signcert>, B<-xsign>
 | 
						|
 | 
						|
Calls the L<openssl-ca(1)> command to sign a certificate request. It expects the
 | 
						|
request to be in the file F<newreq.pem>. The new certificate is written to the
 | 
						|
file F<newcert.pem> except in the case of the B<-xsign> option when it is
 | 
						|
written to standard output.
 | 
						|
 | 
						|
=item B<-signCA>
 | 
						|
 | 
						|
This option is the same as the B<-sign> option except it uses the
 | 
						|
configuration file section B<v3_ca> and so makes the signed request a
 | 
						|
valid CA certificate. This is useful when creating intermediate CA from
 | 
						|
a root CA.  Extra params are passed to L<openssl-ca(1)>.
 | 
						|
 | 
						|
=item B<-signcert>
 | 
						|
 | 
						|
This option is the same as B<-sign> except it expects a self signed certificate
 | 
						|
to be present in the file F<newreq.pem>.
 | 
						|
Extra params are passed to L<openssl-x509(1)> and L<openssl-ca(1)>.
 | 
						|
 | 
						|
=item B<-crl>
 | 
						|
 | 
						|
Generate a CRL. Executes L<openssl-ca(1)>.
 | 
						|
 | 
						|
=item B<-revoke> I<certfile> [I<reason>]
 | 
						|
 | 
						|
Revoke the certificate contained in the specified B<certfile>. An optional
 | 
						|
reason may be specified, and must be one of: B<unspecified>,
 | 
						|
B<keyCompromise>, B<CACompromise>, B<affiliationChanged>, B<superseded>,
 | 
						|
B<cessationOfOperation>, B<certificateHold>, or B<removeFromCRL>.
 | 
						|
Leverages L<openssl-ca(1)>.
 | 
						|
 | 
						|
=item B<-verify>
 | 
						|
 | 
						|
Verifies certificates against the CA certificate for F<demoCA>. If no
 | 
						|
certificates are specified on the command line it tries to verify the file
 | 
						|
F<newcert.pem>.  Invokes L<openssl-verify(1)>.
 | 
						|
 | 
						|
=item B<-extra-I<cmd>> I<parameter>
 | 
						|
 | 
						|
For each option B<extra-I<cmd>>, pass I<parameter> to the L<openssl(1)>
 | 
						|
sub-command with the same name as I<cmd>, if that sub-command is invoked.
 | 
						|
For example, if L<openssl-req(1)> is invoked, the I<parameter> given with
 | 
						|
B<-extra-req> will be passed to it.
 | 
						|
For multi-word parameters, either repeat the option or quote the I<parameters>
 | 
						|
so it looks like one word to your shell.
 | 
						|
See the individual command documentation for more information.
 | 
						|
 | 
						|
=back
 | 
						|
 | 
						|
=head1 EXAMPLES
 | 
						|
 | 
						|
Create a CA hierarchy:
 | 
						|
 | 
						|
 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.
 | 
						|
 | 
						|
 CA.pl -newca
 | 
						|
 CA.pl -newreq
 | 
						|
 CA.pl -sign
 | 
						|
 CA.pl -pkcs12 "My Test Certificate"
 | 
						|
 | 
						|
=head1 ENVIRONMENT
 | 
						|
 | 
						|
The environment variable B<OPENSSL> may be used to specify the name of
 | 
						|
the OpenSSL program. It can be a full pathname, or a relative one.
 | 
						|
 | 
						|
The environment variable B<OPENSSL_CONFIG> may be used to specify a
 | 
						|
configuration option and value to the B<req> and B<ca> commands invoked by
 | 
						|
this script. It's value should be the option and pathname, as in
 | 
						|
C<-config /path/to/conf-file>.
 | 
						|
 | 
						|
=head1 SEE ALSO
 | 
						|
 | 
						|
L<openssl(1)>,
 | 
						|
L<openssl-x509(1)>,
 | 
						|
L<openssl-ca(1)>,
 | 
						|
L<openssl-req(1)>,
 | 
						|
L<openssl-pkcs12(1)>,
 | 
						|
L<config(5)>
 | 
						|
 | 
						|
=head1 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
 | 
						|
L<https://www.openssl.org/source/license.html>.
 | 
						|
 | 
						|
=cut
 |