Looks good. Moves docs into a separate directory with it's own makefile. Provided that patch 2/4 was sane autotools-vise, I give this one an ACK.
-- Samuli Seppänen Community Manager OpenVPN Technologies, Inc irc freenode net: mattock > Signed-off-by: Alon Bar-Lev <alon.bar...@gmail.com> > --- > Makefile.am | 2 +- > configure.ac | 1 + > doc/Makefile.am | 16 ++++ > doc/README-1.0 | 161 ++++++++++++++++++++++++++++++++++++ > doc/README-2.0 | 229 > +++++++++++++++++++++++++++++++++++++++++++++++++++ > easy-rsa/1.0/README | 161 ------------------------------------ > easy-rsa/2.0/README | 229 > --------------------------------------------------- > 7 files changed, 408 insertions(+), 391 deletions(-) > create mode 100644 doc/Makefile.am > create mode 100644 doc/README-1.0 > create mode 100644 doc/README-2.0 > delete mode 100644 easy-rsa/1.0/README > delete mode 100644 easy-rsa/2.0/README > > diff --git a/Makefile.am b/Makefile.am > index f6433d5..743da35 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -33,7 +33,7 @@ MAINTAINERCLEANFILES = \ > $(srcdir)/depcomp $(srcdir)/aclocal.m4 \ > $(srcdir)/config.guess $(srcdir)/config.sub > > -EXTRA_DIST = easy-rsa > +EXTRA_DIST = doc easy-rsa > > dist_doc_DATA = \ > COPYRIGHT.GPL \ > diff --git a/configure.ac b/configure.ac > index f9625e5..1e52ece 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -47,5 +47,6 @@ AC_SUBST([easyrsadir]) > > AC_CONFIG_FILES([ > Makefile > + doc/Makefile > ]) > AC_OUTPUT > diff --git a/doc/Makefile.am b/doc/Makefile.am > new file mode 100644 > index 0000000..de183c6 > --- /dev/null > +++ b/doc/Makefile.am > @@ -0,0 +1,16 @@ > +# > +# Easy-RSA -- This is a small RSA key management package, based on the > openssl > +# command line tool, that can be found in the easy-rsa > subdirectory > +# of the OpenVPN distribution. While this tool is primary > concerned > +# with key management for the SSL VPN application space, it can > also > +# be used for building web certificates. > +# > +# Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sa...@openvpn.net> > +# Copyright (C) 2006-2012 Alon Bar-Lev <alon.bar...@gmail.com> > +# > + > +MAINTAINERCLEANFILES = \ > + $(srcdir)/Makefile.in > + > +dist_doc_DATA = README-2.0 > +dist_noinst_DATA = README-1.0 > diff --git a/doc/README-1.0 b/doc/README-1.0 > new file mode 100644 > index 0000000..fd424ef > --- /dev/null > +++ b/doc/README-1.0 > @@ -0,0 +1,161 @@ > +This is a small RSA key management package, > +based on the openssl command line tool, that > +can be found in the easy-rsa subdirectory > +of the OpenVPN distribution. > + > +These are reference notes. For step > +by step instructions, see the HOWTO: > + > +http://openvpn.net/howto.html > + > +INSTALL > + > +1. Edit vars. > +2. Set KEY_CONFIG to point to the openssl.cnf file > + included in this distribution. > +3. Set KEY_DIR to point to a directory which will > + contain all keys, certificates, etc. This > + directory need not exist, and if it does, > + it will be deleted with rm -rf, so BE > + CAREFUL how you set KEY_DIR. > +4. (Optional) Edit other fields in vars > + per your site data. You may want to > + increase KEY_SIZE to 2048 if you are > + paranoid and don't mind slower key > + processing, but certainly 1024 is > + fine for testing purposes. KEY_SIZE > + must be compatible across both peers > + participating in a secure SSL/TLS > + connection. > +5 . vars > +6. ./clean-all > +7. As you create certificates, keys, and > + certificate signing requests, understand that > + only .key files should be kept confidential. > + .crt and .csr files can be sent over insecure > + channels such as plaintext email. > +8. You should never need to copy a .key file > + between computers. Normally each computer > + will have its own certificate/key pair. > + > +BUILD YOUR OWN ROOT CERTIFICATE AUTHORITY (CA) CERTIFICATE/KEY > + > +1. ./build-ca > +2. ca.crt and ca.key will be built in your KEY_DIR > + directory > + > +BUILD AN INTERMEDIATE CERTIFICATE AUTHORITY CERTIFICATE/KEY (optional) > + > +1. ./build-inter inter > +2. inter.crt and inter.key will be built in your KEY_DIR > + directory and signed with your root certificate. > + > +BUILD DIFFIE-HELLMAN PARAMETERS (necessary for > +the server end of a SSL/TLS connection). > + > +1. ./build-dh > + > +BUILD A CERTIFICATE SIGNING REQUEST (If > +you want to sign your certificate with a root > +certificate controlled by another individual > +or organization, or residing on a different machine). > + > +1. Get ca.crt (the root certificate) from your > + certificate authority. Though this > + transfer can be over an insecure channel, to prevent > + man-in-the-middle attacks you must confirm that > + ca.crt was not tampered with. Large CAs solve this > + problem by hardwiring their root certificates into > + popular web browsers. A simple way to verify a root > + CA is to call the issuer on the telephone and confirm > + that the md5sum or sha1sum signatures on the ca.crt > + files match (such as with the command: "md5sum ca.crt"). > +2. Choose a name for your certificate such as your computer > + name. In our example we will use "mycert". > +3. ./build-req mycert > +4. You can ignore most of the fields, but set > + "Common Name" to something unique such as your > + computer's host name. Leave all password > + fields blank, unless you want your private key > + to be protected by password. Using a password > + is not required -- it will make your key more secure > + but also more inconvenient to use, because you will > + need to supply your password anytime the key is used. > + NOTE: if you are using a password, use ./build-req-pass > + instead of ./build-req > +5. Your key will be written to $KEY_DIR/mycert.key > +6. Your certificate signing request will be written to > + to $KEY_DIR/mycert.csr > +7. Email mycert.csr to the individual or organization > + which controls the root certificate. This can be > + done over an insecure channel. > +8. After the .csr file is signed by the root certificate > + authority, you will receive a file mycert.crt > + (your certificate). Place mycert.crt in your > + KEY_DIR directory. > +9. The combined files of mycert.crt, mycert.key, > + and ca.crt can now be used to secure one end of > + an SSL/TLS connection. > + > +SIGN A CERTIFICATE SIGNING REQUEST > + > +1. ./sign-req mycert > +2. mycert.crt will be built in your KEY_DIR > + directory using mycert.csr and your root CA > + file as input. > + > +BUILD AND SIGN A CERTIFICATE SIGNING REQUEST > +USING A LOCALLY INSTALLED ROOT CERTIFICATE/KEY -- this > +script generates and signs a certificate in one step, > +but it requires that the generated certificate and private > +key files be copied to the destination host over a > +secure channel. > + > +1. ./build-key mycert (no password protection) > +2. OR ./build-key-pass mycert (with password protection) > +3. OR ./build-key-pkcs12 mycert (PKCS #12 format) > +4. OR ./build-key-server mycert (with nsCertType=server) > +5. mycert.crt and mycert.key will be built in your > + KEY_DIR directory, and mycert.crt will be signed > + by your root CA. If ./build-key-pkcs12 was used a > + mycert.p12 file will also be created including the > + private key, certificate and the ca certificate. > + > +IMPORTANT > + > +To avoid a possible Man-in-the-Middle attack where an authorized > +client tries to connect to another client by impersonating the > +server, make sure to enforce some kind of server certificate > +verification by clients. There are currently four different ways > +of accomplishing this, listed in the order of preference: > + > +(1) Build your server certificates with the build-key-server > + script. This will designate the certificate as a > + server-only certificate by setting nsCertType=server. > + Now add the following line to your client configuration: > + > + ns-cert-type server > + > + This will block clients from connecting to any > + server which lacks the nsCertType=server designation > + in its certificate, even if the certificate has been > + signed by the CA which is cited in the OpenVPN configuration > + file (--ca directive). > + > +(2) Use the --tls-remote directive on the client to > + accept/reject the server connection based on the common > + name of the server certificate. > + > +(3) Use a --tls-verify script or plugin to accept/reject the > + server connection based on a custom test of the server > + certificate's embedded X509 subject details. > + > +(4) Sign server certificates with one CA and client certificates > + with a different CA. The client config "ca" directive should > + reference the server-signing CA while the server config "ca" > + directive should reference the client-signing CA. > + > +NOTES > + > +Show certificate fields: > + openssl x509 -in cert.crt -text > diff --git a/doc/README-2.0 b/doc/README-2.0 > new file mode 100644 > index 0000000..6f5395c > --- /dev/null > +++ b/doc/README-2.0 > @@ -0,0 +1,229 @@ > +EASY-RSA Version 2.0-rc1 > + > +This is a small RSA key management package, based on the openssl > +command line tool, that can be found in the easy-rsa subdirectory > +of the OpenVPN distribution. While this tool is primary concerned > +with key management for the SSL VPN application space, it can also > +be used for building web certificates. > + > +These are reference notes. For step-by-step instructions, see the > +HOWTO: > + > +http://openvpn.net/howto.html > + > +This package is based on the ./pkitool script. Run ./pkitool > +without arguments for a detailed help message (which is also pasted > +below). > + > +Release Notes for easy-rsa-2.0 > + > +* Most functionality has been consolidated into the pkitool > + script. For compatibility, all previous scripts from 1.0 such > + as build-key and build-key-server are provided as stubs > + which call pkitool to do the real work. > + > +* pkitool has a --batch flag (enabled by default) which generates > + keys/certs without needing any interactive input. pkitool > + can still generate certs/keys using interactive prompting by > + using the --interact flag. > + > +* The inherit-inter script has been provided for creating > + a new PKI rooted on an intermediate certificate built within a > + higher-level PKI. See comments in the inherit-inter script > + for more info. > + > +* The openssl.cnf file has been modified. pkitool will not > + work with the openssl.cnf file included with previous > + easy-rsa releases. > + > +* The vars file has been modified -- the following extra > + variables have been added: EASY_RSA, CA_EXPIRE, > + KEY_EXPIRE. > + > +* The make-crl and revoke-crt scripts have been removed and > + are replaced by the revoke-full script. > + > +* The "Organizational Unit" X509 field can be set using > + the KEY_OU environmental variable before calling pkitool. > + > +* This release only affects the Linux/Unix version of easy-rsa. > + The Windows version (written to use the Windows shell) is unchanged. > + > +* Use the revoke-full script to revoke a certificate, and generate > + (or update) the crl.pem file in the keys directory (as set by the > + vars script). Then use "crl-verify crl.pem" in your OpenVPN server > + config file, so that OpenVPN can reject any connections coming from > + clients which present a revoked certificate. Usage for the script is: > + > + revoke-full <common-name> > + > + Note this this procedure is primarily designed to revoke client > + certificates. You could theoretically use this method to revoke > + server certificates as well, but then you would need to propagate > + the crl.pem file to all clients as well, and have them include > + "crl-verify crl.pem" in their configuration files. > + > +* PKCS#11 support was added. > + > +* For those interested in using this tool to generate web certificates, > + A variant of the easy-rsa package that allows the creation of multi-domain > + certificates with subjectAltName can be obtained from here: > + > + http://www.bisente.com/proyectos/easy-rsa-subjectaltname/ > + > +INSTALL easy-rsa > + > +1. Edit vars. > +2. Set KEY_CONFIG to point to the correct openssl-<version>.cnf > + file included in this distribution. > +3. Set KEY_DIR to point to a directory which will > + contain all keys, certificates, etc. This > + directory need not exist, and if it does, > + it will be deleted with rm -rf, so BE > + CAREFUL how you set KEY_DIR. > +4. (Optional) Edit other fields in vars > + per your site data. You may want to > + increase KEY_SIZE to 2048 if you are > + paranoid and don't mind slower key > + processing, but certainly 1024 is > + fine for testing purposes. KEY_SIZE > + must be compatible across both peers > + participating in a secure SSL/TLS > + connection. > +5. (Optional) If you intend to use PKCS#11, > + install openssl >= 0.9.7, install the > + following components from www.opensc.org: > + - opensc >= 0.10.0 > + - engine_pkcs11 >= 0.1.3 > + Update the openssl.cnf to load the engine: > + - Uncomment pkcs11 under engine_section. > + - Validate path at dynamic_path under pkcs11_section. > +6. . vars > +7. ./clean-all > +8. As you create certificates, keys, and > + certificate signing requests, understand that > + only .key files should be kept confidential. > + .crt and .csr files can be sent over insecure > + channels such as plaintext email. > + > +IMPORTANT > + > +To avoid a possible Man-in-the-Middle attack where an authorized > +client tries to connect to another client by impersonating the > +server, make sure to enforce some kind of server certificate > +verification by clients. There are currently four different ways > +of accomplishing this, listed in the order of preference: > + > +(1) Build your server certificates with specific key usage and > + extended key usage. The RFC3280 determine that the following > + attributes should be provided for TLS connections: > + > + Mode Key usage Extended key usage > + > --------------------------------------------------------------------------- > + Client digitalSignature TLS Web Client Authentication > + keyAgreement > + digitalSignature, keyAgreement > + > + Server digitalSignature, keyEncipherment TLS Web Server > Authentication > + digitalSignature, keyAgreement > + > + Now add the following line to your client configuration: > + > + remote-cert-tls server > + > + This will block clients from connecting to any > + server which lacks the required extension designation > + in its certificate, even if the certificate has been > + signed by the CA which is cited in the OpenVPN configuration > + file (--ca directive). > + > +(3) Use the --tls-remote directive on the client to > + accept/reject the server connection based on the common > + name of the server certificate. > + > +(3) Use a --tls-verify script or plugin to accept/reject the > + server connection based on a custom test of the server > + certificate's embedded X509 subject details. > + > +(4) Sign server certificates with one CA and client certificates > + with a different CA. The client config "ca" directive should > + reference the server-signing CA while the server config "ca" > + directive should reference the client-signing CA. > + > +NOTES > + > +Show certificate fields: > + openssl x509 -in cert.crt -text > + > +PKITOOL documentation > + > +pkitool 2.0 > +Usage: pkitool [options...] [common-name] > +Options: > + --batch : batch mode (default) > + --keysize : Set keysize > + size : size (default=1024) > + --interact : interactive mode > + --server : build server cert > + --initca : build root CA > + --inter : build intermediate CA > + --pass : encrypt private key with password > + --csr : only generate a CSR, do not sign > + --sign : sign an existing CSR > + --pkcs12 : generate a combined PKCS#12 file > + --pkcs11 : generate certificate on PKCS#11 token > + lib : PKCS#11 library > + slot : PKCS#11 slot > + id : PKCS#11 object id (hex string) > + label : PKCS#11 object label > +Standalone options: > + --pkcs11-slots : list PKCS#11 slots > + lib : PKCS#11 library > + --pkcs11-objects : list PKCS#11 token objects > + lib : PKCS#11 library > + slot : PKCS#11 slot > + --pkcs11-init : initialize PKCS#11 token DANGEROUS!!! > + lib : PKCS#11 library > + slot : PKCS#11 slot > + label : PKCS#11 token label > +Notes: > + Please edit the vars script to reflect your configuration, > + then source it with "source ./vars". > + Next, to start with a fresh PKI configuration and to delete any > + previous certificates and keys, run "./clean-all". > + Finally, you can run this tool (pkitool) to build certificates/keys. > + In order to use PKCS#11 interface you must have opensc-0.10.0 or higher. > +Generated files and corresponding OpenVPN directives: > +(Files will be placed in the $KEY_DIR directory, defined in ./vars) > + ca.crt -> root certificate (--ca) > + ca.key -> root key, keep secure (not directly used by OpenVPN) > + .crt files -> client/server certificates (--cert) > + .key files -> private keys, keep secure (--key) > + .csr files -> certificate signing request (not directly used by OpenVPN) > + dh1024.pem or dh2048.pem -> Diffie Hellman parameters (--dh) > +Examples: > + pkitool --initca -> Build root certificate > + pkitool --initca --pass -> Build root certificate with > password-protected key > + pkitool --server server1 -> Build "server1" certificate/key > + pkitool client1 -> Build "client1" certificate/key > + pkitool --pass client2 -> Build password-protected "client2" > certificate/key > + pkitool --pkcs12 client3 -> Build "client3" certificate/key in PKCS#12 > format > + pkitool --csr client4 -> Build "client4" CSR to be signed by another CA > + pkitool --sign client4 -> Sign "client4" CSR > + pkitool --inter interca -> Build an intermediate key-signing > certificate/key > + Also see ./inherit-inter script. > + pkitool --pkcs11 /usr/lib/pkcs11/lib1 0 010203 "client5 id" client5 > + -> Build "client5" certificate/key in PKCS#11 > token > +Typical usage for initial PKI setup. Build myserver, client1, and client2 > cert/keys. > +Protect client2 key with a password. Build DH parms. Generated files in > ./keys : > + [edit vars with your site-specific info] > + source ./vars > + ./clean-all > + ./build-dh -> takes a long time, consider backgrounding > + ./pkitool --initca > + ./pkitool --server myserver > + ./pkitool client1 > + ./pkitool --pass client2 > +Typical usage for adding client cert to existing PKI: > + source ./vars > + ./pkitool client-new > diff --git a/easy-rsa/1.0/README b/easy-rsa/1.0/README > deleted file mode 100644 > index fd424ef..0000000 > --- a/easy-rsa/1.0/README > +++ /dev/null > @@ -1,161 +0,0 @@ > -This is a small RSA key management package, > -based on the openssl command line tool, that > -can be found in the easy-rsa subdirectory > -of the OpenVPN distribution. > - > -These are reference notes. For step > -by step instructions, see the HOWTO: > - > -http://openvpn.net/howto.html > - > -INSTALL > - > -1. Edit vars. > -2. Set KEY_CONFIG to point to the openssl.cnf file > - included in this distribution. > -3. Set KEY_DIR to point to a directory which will > - contain all keys, certificates, etc. This > - directory need not exist, and if it does, > - it will be deleted with rm -rf, so BE > - CAREFUL how you set KEY_DIR. > -4. (Optional) Edit other fields in vars > - per your site data. You may want to > - increase KEY_SIZE to 2048 if you are > - paranoid and don't mind slower key > - processing, but certainly 1024 is > - fine for testing purposes. KEY_SIZE > - must be compatible across both peers > - participating in a secure SSL/TLS > - connection. > -5 . vars > -6. ./clean-all > -7. As you create certificates, keys, and > - certificate signing requests, understand that > - only .key files should be kept confidential. > - .crt and .csr files can be sent over insecure > - channels such as plaintext email. > -8. You should never need to copy a .key file > - between computers. Normally each computer > - will have its own certificate/key pair. > - > -BUILD YOUR OWN ROOT CERTIFICATE AUTHORITY (CA) CERTIFICATE/KEY > - > -1. ./build-ca > -2. ca.crt and ca.key will be built in your KEY_DIR > - directory > - > -BUILD AN INTERMEDIATE CERTIFICATE AUTHORITY CERTIFICATE/KEY (optional) > - > -1. ./build-inter inter > -2. inter.crt and inter.key will be built in your KEY_DIR > - directory and signed with your root certificate. > - > -BUILD DIFFIE-HELLMAN PARAMETERS (necessary for > -the server end of a SSL/TLS connection). > - > -1. ./build-dh > - > -BUILD A CERTIFICATE SIGNING REQUEST (If > -you want to sign your certificate with a root > -certificate controlled by another individual > -or organization, or residing on a different machine). > - > -1. Get ca.crt (the root certificate) from your > - certificate authority. Though this > - transfer can be over an insecure channel, to prevent > - man-in-the-middle attacks you must confirm that > - ca.crt was not tampered with. Large CAs solve this > - problem by hardwiring their root certificates into > - popular web browsers. A simple way to verify a root > - CA is to call the issuer on the telephone and confirm > - that the md5sum or sha1sum signatures on the ca.crt > - files match (such as with the command: "md5sum ca.crt"). > -2. Choose a name for your certificate such as your computer > - name. In our example we will use "mycert". > -3. ./build-req mycert > -4. You can ignore most of the fields, but set > - "Common Name" to something unique such as your > - computer's host name. Leave all password > - fields blank, unless you want your private key > - to be protected by password. Using a password > - is not required -- it will make your key more secure > - but also more inconvenient to use, because you will > - need to supply your password anytime the key is used. > - NOTE: if you are using a password, use ./build-req-pass > - instead of ./build-req > -5. Your key will be written to $KEY_DIR/mycert.key > -6. Your certificate signing request will be written to > - to $KEY_DIR/mycert.csr > -7. Email mycert.csr to the individual or organization > - which controls the root certificate. This can be > - done over an insecure channel. > -8. After the .csr file is signed by the root certificate > - authority, you will receive a file mycert.crt > - (your certificate). Place mycert.crt in your > - KEY_DIR directory. > -9. The combined files of mycert.crt, mycert.key, > - and ca.crt can now be used to secure one end of > - an SSL/TLS connection. > - > -SIGN A CERTIFICATE SIGNING REQUEST > - > -1. ./sign-req mycert > -2. mycert.crt will be built in your KEY_DIR > - directory using mycert.csr and your root CA > - file as input. > - > -BUILD AND SIGN A CERTIFICATE SIGNING REQUEST > -USING A LOCALLY INSTALLED ROOT CERTIFICATE/KEY -- this > -script generates and signs a certificate in one step, > -but it requires that the generated certificate and private > -key files be copied to the destination host over a > -secure channel. > - > -1. ./build-key mycert (no password protection) > -2. OR ./build-key-pass mycert (with password protection) > -3. OR ./build-key-pkcs12 mycert (PKCS #12 format) > -4. OR ./build-key-server mycert (with nsCertType=server) > -5. mycert.crt and mycert.key will be built in your > - KEY_DIR directory, and mycert.crt will be signed > - by your root CA. If ./build-key-pkcs12 was used a > - mycert.p12 file will also be created including the > - private key, certificate and the ca certificate. > - > -IMPORTANT > - > -To avoid a possible Man-in-the-Middle attack where an authorized > -client tries to connect to another client by impersonating the > -server, make sure to enforce some kind of server certificate > -verification by clients. There are currently four different ways > -of accomplishing this, listed in the order of preference: > - > -(1) Build your server certificates with the build-key-server > - script. This will designate the certificate as a > - server-only certificate by setting nsCertType=server. > - Now add the following line to your client configuration: > - > - ns-cert-type server > - > - This will block clients from connecting to any > - server which lacks the nsCertType=server designation > - in its certificate, even if the certificate has been > - signed by the CA which is cited in the OpenVPN configuration > - file (--ca directive). > - > -(2) Use the --tls-remote directive on the client to > - accept/reject the server connection based on the common > - name of the server certificate. > - > -(3) Use a --tls-verify script or plugin to accept/reject the > - server connection based on a custom test of the server > - certificate's embedded X509 subject details. > - > -(4) Sign server certificates with one CA and client certificates > - with a different CA. The client config "ca" directive should > - reference the server-signing CA while the server config "ca" > - directive should reference the client-signing CA. > - > -NOTES > - > -Show certificate fields: > - openssl x509 -in cert.crt -text > diff --git a/easy-rsa/2.0/README b/easy-rsa/2.0/README > deleted file mode 100644 > index 6f5395c..0000000 > --- a/easy-rsa/2.0/README > +++ /dev/null > @@ -1,229 +0,0 @@ > -EASY-RSA Version 2.0-rc1 > - > -This is a small RSA key management package, based on the openssl > -command line tool, that can be found in the easy-rsa subdirectory > -of the OpenVPN distribution. While this tool is primary concerned > -with key management for the SSL VPN application space, it can also > -be used for building web certificates. > - > -These are reference notes. For step-by-step instructions, see the > -HOWTO: > - > -http://openvpn.net/howto.html > - > -This package is based on the ./pkitool script. Run ./pkitool > -without arguments for a detailed help message (which is also pasted > -below). > - > -Release Notes for easy-rsa-2.0 > - > -* Most functionality has been consolidated into the pkitool > - script. For compatibility, all previous scripts from 1.0 such > - as build-key and build-key-server are provided as stubs > - which call pkitool to do the real work. > - > -* pkitool has a --batch flag (enabled by default) which generates > - keys/certs without needing any interactive input. pkitool > - can still generate certs/keys using interactive prompting by > - using the --interact flag. > - > -* The inherit-inter script has been provided for creating > - a new PKI rooted on an intermediate certificate built within a > - higher-level PKI. See comments in the inherit-inter script > - for more info. > - > -* The openssl.cnf file has been modified. pkitool will not > - work with the openssl.cnf file included with previous > - easy-rsa releases. > - > -* The vars file has been modified -- the following extra > - variables have been added: EASY_RSA, CA_EXPIRE, > - KEY_EXPIRE. > - > -* The make-crl and revoke-crt scripts have been removed and > - are replaced by the revoke-full script. > - > -* The "Organizational Unit" X509 field can be set using > - the KEY_OU environmental variable before calling pkitool. > - > -* This release only affects the Linux/Unix version of easy-rsa. > - The Windows version (written to use the Windows shell) is unchanged. > - > -* Use the revoke-full script to revoke a certificate, and generate > - (or update) the crl.pem file in the keys directory (as set by the > - vars script). Then use "crl-verify crl.pem" in your OpenVPN server > - config file, so that OpenVPN can reject any connections coming from > - clients which present a revoked certificate. Usage for the script is: > - > - revoke-full <common-name> > - > - Note this this procedure is primarily designed to revoke client > - certificates. You could theoretically use this method to revoke > - server certificates as well, but then you would need to propagate > - the crl.pem file to all clients as well, and have them include > - "crl-verify crl.pem" in their configuration files. > - > -* PKCS#11 support was added. > - > -* For those interested in using this tool to generate web certificates, > - A variant of the easy-rsa package that allows the creation of multi-domain > - certificates with subjectAltName can be obtained from here: > - > - http://www.bisente.com/proyectos/easy-rsa-subjectaltname/ > - > -INSTALL easy-rsa > - > -1. Edit vars. > -2. Set KEY_CONFIG to point to the correct openssl-<version>.cnf > - file included in this distribution. > -3. Set KEY_DIR to point to a directory which will > - contain all keys, certificates, etc. This > - directory need not exist, and if it does, > - it will be deleted with rm -rf, so BE > - CAREFUL how you set KEY_DIR. > -4. (Optional) Edit other fields in vars > - per your site data. You may want to > - increase KEY_SIZE to 2048 if you are > - paranoid and don't mind slower key > - processing, but certainly 1024 is > - fine for testing purposes. KEY_SIZE > - must be compatible across both peers > - participating in a secure SSL/TLS > - connection. > -5. (Optional) If you intend to use PKCS#11, > - install openssl >= 0.9.7, install the > - following components from www.opensc.org: > - - opensc >= 0.10.0 > - - engine_pkcs11 >= 0.1.3 > - Update the openssl.cnf to load the engine: > - - Uncomment pkcs11 under engine_section. > - - Validate path at dynamic_path under pkcs11_section. > -6. . vars > -7. ./clean-all > -8. As you create certificates, keys, and > - certificate signing requests, understand that > - only .key files should be kept confidential. > - .crt and .csr files can be sent over insecure > - channels such as plaintext email. > - > -IMPORTANT > - > -To avoid a possible Man-in-the-Middle attack where an authorized > -client tries to connect to another client by impersonating the > -server, make sure to enforce some kind of server certificate > -verification by clients. There are currently four different ways > -of accomplishing this, listed in the order of preference: > - > -(1) Build your server certificates with specific key usage and > - extended key usage. The RFC3280 determine that the following > - attributes should be provided for TLS connections: > - > - Mode Key usage Extended key usage > - > --------------------------------------------------------------------------- > - Client digitalSignature TLS Web Client Authentication > - keyAgreement > - digitalSignature, keyAgreement > - > - Server digitalSignature, keyEncipherment TLS Web Server > Authentication > - digitalSignature, keyAgreement > - > - Now add the following line to your client configuration: > - > - remote-cert-tls server > - > - This will block clients from connecting to any > - server which lacks the required extension designation > - in its certificate, even if the certificate has been > - signed by the CA which is cited in the OpenVPN configuration > - file (--ca directive). > - > -(3) Use the --tls-remote directive on the client to > - accept/reject the server connection based on the common > - name of the server certificate. > - > -(3) Use a --tls-verify script or plugin to accept/reject the > - server connection based on a custom test of the server > - certificate's embedded X509 subject details. > - > -(4) Sign server certificates with one CA and client certificates > - with a different CA. The client config "ca" directive should > - reference the server-signing CA while the server config "ca" > - directive should reference the client-signing CA. > - > -NOTES > - > -Show certificate fields: > - openssl x509 -in cert.crt -text > - > -PKITOOL documentation > - > -pkitool 2.0 > -Usage: pkitool [options...] [common-name] > -Options: > - --batch : batch mode (default) > - --keysize : Set keysize > - size : size (default=1024) > - --interact : interactive mode > - --server : build server cert > - --initca : build root CA > - --inter : build intermediate CA > - --pass : encrypt private key with password > - --csr : only generate a CSR, do not sign > - --sign : sign an existing CSR > - --pkcs12 : generate a combined PKCS#12 file > - --pkcs11 : generate certificate on PKCS#11 token > - lib : PKCS#11 library > - slot : PKCS#11 slot > - id : PKCS#11 object id (hex string) > - label : PKCS#11 object label > -Standalone options: > - --pkcs11-slots : list PKCS#11 slots > - lib : PKCS#11 library > - --pkcs11-objects : list PKCS#11 token objects > - lib : PKCS#11 library > - slot : PKCS#11 slot > - --pkcs11-init : initialize PKCS#11 token DANGEROUS!!! > - lib : PKCS#11 library > - slot : PKCS#11 slot > - label : PKCS#11 token label > -Notes: > - Please edit the vars script to reflect your configuration, > - then source it with "source ./vars". > - Next, to start with a fresh PKI configuration and to delete any > - previous certificates and keys, run "./clean-all". > - Finally, you can run this tool (pkitool) to build certificates/keys. > - In order to use PKCS#11 interface you must have opensc-0.10.0 or higher. > -Generated files and corresponding OpenVPN directives: > -(Files will be placed in the $KEY_DIR directory, defined in ./vars) > - ca.crt -> root certificate (--ca) > - ca.key -> root key, keep secure (not directly used by OpenVPN) > - .crt files -> client/server certificates (--cert) > - .key files -> private keys, keep secure (--key) > - .csr files -> certificate signing request (not directly used by OpenVPN) > - dh1024.pem or dh2048.pem -> Diffie Hellman parameters (--dh) > -Examples: > - pkitool --initca -> Build root certificate > - pkitool --initca --pass -> Build root certificate with > password-protected key > - pkitool --server server1 -> Build "server1" certificate/key > - pkitool client1 -> Build "client1" certificate/key > - pkitool --pass client2 -> Build password-protected "client2" > certificate/key > - pkitool --pkcs12 client3 -> Build "client3" certificate/key in PKCS#12 > format > - pkitool --csr client4 -> Build "client4" CSR to be signed by another CA > - pkitool --sign client4 -> Sign "client4" CSR > - pkitool --inter interca -> Build an intermediate key-signing > certificate/key > - Also see ./inherit-inter script. > - pkitool --pkcs11 /usr/lib/pkcs11/lib1 0 010203 "client5 id" client5 > - -> Build "client5" certificate/key in PKCS#11 > token > -Typical usage for initial PKI setup. Build myserver, client1, and client2 > cert/keys. > -Protect client2 key with a password. Build DH parms. Generated files in > ./keys : > - [edit vars with your site-specific info] > - source ./vars > - ./clean-all > - ./build-dh -> takes a long time, consider backgrounding > - ./pkitool --initca > - ./pkitool --server myserver > - ./pkitool client1 > - ./pkitool --pass client2 > -Typical usage for adding client cert to existing PKI: > - source ./vars > - ./pkitool client-new > -- > 1.7.3.4 > > > ------------------------------------------------------------------------------ > Virtualization & Cloud Management Using Capacity Planning > Cloud computing makes use of virtualization - but cloud computing > also focuses on allowing computing to be delivered as a service. > http://www.accelacomm.com/jaw/sfnl/114/51521223/ > _______________________________________________ > Openvpn-devel mailing list > Openvpn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/openvpn-devel