=============================================================================== SSL: OpenSSL Commands 15-APR-11 Matt Borland =============================================================================== This contains directions on how to use OpenSSL to manage certificates. 1) CA Actions: Create a CA cert, as well as a key pair for the CA. 1a) Create a CA key, encrypted with des3 password. openssl genrsa -des3 -out cakey.pem 1024 1b) Create a certificate for the CA. openssl req -new -x509 -days 10000 -key cakey.pem -out ca.crt 2) Client Actions: Create a certificate request and a key pair. 2a) Generate a 1024 RSA private key, encrypted with des3 password. openssl genrsa -des3 -out mykey.pem 1024 2b) (opt.) Display to output the public part of the key. openssl rsa -in mykey.pem -pubout 2c) Make a request using the user's key. openssl req -new -key mykey.pem -out myreq.csr 3) CA Actions: Signing the cert and storing the copy of the public key. 3a) Sign the cert with the CA key and CA cert. openssl x509 -req -CA ca.crt -CAkey cakey.pem -days 365 -in myreq.csr -CAcreateserial -out mycert.crt 3b) (alt) Create a self-signed certificate. openssl x509 -req -signkey mykey.pem -days 365 -in myreq.csr -out selfcert.crt 3c) (opt) Display the public key on the certificate (same as public key). openssl x509 -in mycert.crt -noout -pubkey 3d) (opt) Display the certificate information in human readable display. openssl x509 -text -in mycert.crt -noout 3e) (opt) Export the certificate into pkcs12 format. openssl pkcs12 -export -in mycert.crt -out mycert.p12 -name "My Certificate" -inkey mykey.pem 3f) Save the CA's copy of the key to a file. openssl x509 -in mycert.crt -noout -pubkey > cacopyofkey.pem 4) Test Actions: Create a real file and a fake file. echo "This is the real file." > plaintext.txt echo "This is a fake file." > fake.txt 5) Test Actions: Sign a file (prompts for a password). openssl dgst -sha1 -sign mykey.pem -out digest.sha1 plaintext.txt 6) Verify a signature. openssl dgst -sha1 -verify cacopyofkey.pem -signature digest.sha1 plaintext.txt [Returns: Verified OK] openssl dgst -sha1 -verify cacopyofkey.pem -signature digest.sha1 fake.txt [Returns: Verification Failure]