This page gathers my own personal notes explaining how to use OpenSSL's command line utility.

Keys and requests

Generating keys

To generate a triple DES private key which has to be encrypted with pass phrase, 1024 bits used for key, randfile[s] containing random data used to seed the random number generator

openssl genrsa -des3 -out mykey.pem [-rand randfiles] 1024
chmod 400 mykey.pem

To generate an RSA key pair

openssl genrsa -out privatekey.pem 2048

To generate DSA parameters

openssl dsaparam -outform DER -out param.der -text 1024

To generate a DSA private key (requires a DSA parameter PEM file)

openssl gendsa -out dsaprv.pem param.pem

Displaying information

To print DSA parameters

openssl dsaparam -outform DER -genkey -out param.der -text 1024

To print out the components of a private key to standard out:

openssl rsa -noout -text -in key.pem

Changing the passphrase

To change the pass phrase in the private key:

cp key.pem key.pem.old
openssl rsa -in key.pem.old -out key.pem

Conversions

To convert a private key from PEM to DER format:

openssl rsa -in userkey.pem -out userkey.der -outform DER 

Output in DER the private key

openssl rsa -in privatekey.pem -out privatekey.der -outform DER

Output the public key in PEM or DER

openssl rsa -in privatekey.pem -out pubkey.pem -pubout [-outform DER]

Certificates

Creating certificates

  • Create your Root CA's keys, and its self signed certificate
$ openssl req -x509 -newkey rsa:2048 -keyout cakey.pem -out cacert.pem -days 1000 -outform PEM
or:  openssl req -passout file:./passwd -x509 -newkey rsa -out rootcert.pem -config ./openssl.cnf -batch -sha1
  • For each node, create their keys:
openssl genrsa -des3 -out nodekey.pem 2048
  • For each node, create a certificate request (CSR):
openssl req -new -key nodekey.pem -out node.csr -days 1000 [-extensions user_ext]
  • or all first three steps in one command: openssl req -newkey rsa:2048 -keyout … -out … -days
  • Send the signed certificate requests to your CA. The CA should verify the certificate request:
   openssl req -noout -text -verify -in userreq.pem
  • and sign it if everything is okay:
$ openssl x509 -req -in node.csr -out nodecert.pem -CAkey cakey.pem -CA cacert.pem -CAcreateserial -days 1000

TO DO: openssl ca -in testreq.pem -passin file:./passwd -out testcert.pem -config ./openssl.cnf -extensions v3_ca

Viewing certificates

$ openssl x509 -inform PEM -text < certificate.pem
or: openssl x509 -noout -text -in cert.pem

To display the certificate MD5 fingerprint:

openssl x509 -noout -fingerprint -in cert.pem

To display the certificate SHA1 fingerprint:

openssl x509 -noout -sha1 -fingerprint -in cert.pem

Verify certificates

To verify certificate chains:

openssl verify [-CApath directory] cert.pem

Conversions

To convert a certifcate from PEM to DER format:

openssl x509 -in cert.pem -out cert.der -outform DER 

PKCS#12

Create a PKCS#12

To create a PKCS#12 file:

cat cert1.pem cert2.pem mycert.pem > certs.pem
openssl pkcs12 -export -in certs.pem -inkey mykey.pem -out user.p12 -name "Blah"

or in a single step:

openssl pkcs12 -export -in mycert.pem -inkey mykey.pem -out user.p12 -certfile othercerts.pem -name "Blah"

Print information

openssl pkcs12 -noout -info -in user.p12
 
Back to top
tools/openssl.txt · Last modified: 2009/02/28 15:21 (external edit)
 
 
Get OpenSolaris Recent changes RSS feed Valid XHTML 1.0 Driven by DokuWiki chimeric.de = chi`s home
(c) A. Apvrille - 2009