roger's picture

Generating SSL certificates for differentpla.net

Because I keep forgetting how to.

Preamble

$ mkdir SSL
$ cd SSL
$ cp /usr/lib/ssl/misc/CA.pl .

Setting up a certificate authority

$ ./CA.pl -newca
CA certificate filename (or enter to create)Press Enter

Making CA certificate ...
Generating a 1024 bit RSA private key
.......................++++++
.....................................................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:Enter a passphrase to use for the CA
Verifying - Enter PEM pass phrase:Enter the same passphrase
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:UK
State or Province Name (full name) [Some-State]:England
Locality Name (eg, city) []:London
Organization Name (eg, company) [Internet Widgits Pty Ltd]:differentpla.net
Organizational Unit Name (eg, section) []:Certificate Authority
Common Name (eg, YOUR name) []:ca.differentpla.net
Email Address []:Enter a valid email address

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Press Enter
An optional company name []:Press Enter
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:Enter the passphrase from above
Check that the request matches the signature
Signature ok
Certificate Details:

(snip)

Certificate is to be certified until May 17 06:21:04 2011 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated

Stashing the CA certificate

# cp /path/to/SSL/demoCA/cacert.pem /etc/ssl/certs/ca-differentpla-net.cer

Generating and signing a certificate

$ ./CA.pl -newreq
Generating a 1024 bit RSA private key
...............++++++
..........++++++
writing new private key to 'newkey.pem'
Enter PEM pass phrase:Enter a passphrase
Verifying - Enter PEM pass phrase:Enter the same passphrase
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:UK
State or Province Name (full name) [Some-State]:England
Locality Name (eg, city) []:London
Organization Name (eg, company) [Internet Widgits Pty Ltd]:differentpla.net
Organizational Unit Name (eg, section) []:Press Enter
Common Name (eg, YOUR name) []:smtp.differentpla.net
Email Address []:Enter a valid email address

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Press Enter
An optional company name []:Press Enter
Request is in newreq.pem, private key is in newkey.pem
$ ./CA.pl -sign
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:Enter the CA passphrase
Check that the request matches the signature
Signature ok
Certificate Details:

(snip)

Certificate is to be certified until May 17 06:28:15 2009 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Signed certificate is in newcert.pem

Stripping the passphrase

$ cp newkey.pem newkey.pem.org
$ openssl rsa -in newkey.pem.org -out newkey.pem
Enter pass phrase for newkey.pem.org:Enter the passphrase that you provided when generating the key
writing RSA key

Don't need these files any more

$ rm newreq.pem newkey.pem.org

Storing the certificate and key files

# cp /path/to/SSL/newcert.pem /etc/ssl/certs/smtp-differentpla-net.cer
# chmod a+r /etc/ssl/certs/smtp-differentpla-net.cer
# cp /path/to/SSL/newkey.pem /etc/ssl/private/smtp-differentpla-net.key
# chmod 400 /etc/ssl/private/smtp-differentpla-net.key

Using that certificate for qmail

qmail needs a /var/qmail/control/servercert.pem file containing the key (no passphrase) followed by the certificate.

# cat /etc/ssl/private/smtp-differentpla-net.key /etc/ssl/certs/smtp-differentpla-net.cer > /var/qmail/control/servercert.pem
# chmod 400 /var/qmail/control/servercert.pem
# chown vpopmail.vchkpw /var/qmail/control/servercert.pem

Using a certificate for BincIMAP

# cat /etc/ssl/private/imap-differentpla-net.key /etc/ssl/certs/imap-differentpla-net.cer > /usr/local/etc/bincimap.pem
# chown root.staff /usr/local/etc/bincimap.pem
# chmod 400 /usr/local/etc/bincimap.pem

Making the certificates available to anyone that wants them

# mkdir /path/to/www/certs
# cp /etc/ssl/certs/*.cer /path/to/www/certs
# chmod a+r /path/to/www/certs/*

Reply

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <br> <code> <dd> <dl> <dt> <hr> <h1> <h2> <h3> <i> <img> <li> <ol> <p> <pre> <table> <td> <th> <tr> <tt> <u> <ul>
  • Images can be added to this post.

More information about formatting options