
Pasos a seguir para generar e instalar un certificado SSL en un servidor web Apache
Para instalar un certificado SSL firmado por Verisign, hacen falta los siguientes files:
1) privkey.pem (Key encriptada)
2) server.key (Key sin encriptar)
3) server.csr (Certificate Sign Request)
4) server.crt (o server.cert) (Certificado)

Para generar los ficheros ejecutamos el siguiente comando:
[user@equipo user]$ openssl req -newkey rsa:2048 -new > server.csr
Este comando va a pedir una serie de datos correspondientes al dominio (o dominios) donde se utilizará el certificado, todos los campos son puramente informativos, salvo CommonName que debe ser exactamente el dominio donde se usará el certificado.
En sunOS el path del comando openssl suele ser: /usr/local/ssl/bin/openssl
Si se va a realizar la renovacion de un certificado se puden obtener los datos de la siguiente URL, clickeando en "renew", y luego introduciendo el Common Name a renovar.

Ejemplo de salida del comando anterior:
[user@equipo user]$ openssl req -newkey rsa:2048 -new > server.csr
Generating a 2048 bit RSA private key
............................+++
..............................+++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:password
Verifying - Enter PEM pass phrase:password
-----
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]:AR
State or Province Name (full name) [Some-State]: Argentina
Locality Name (eg, city) []:Argentina
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Empresa
Organizational Unit Name (eg, section) []:Empresa
Common Name (eg, YOUR name) []:empresa.empresa.com.ar
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: [Solo presionar ENTER]
An optional company name []: [Solo presionar ENTER]
[user@equipo user]$
Este comando va crear privkey.pem y server.csr
[user@equipo user]$ls -l
total 8
-rw-r--r-- 1 user group 963 Feb 3 10:20 privkey.pem
-rw-r--r-- 1 user group 761 Feb 3 10:20 server.csr
[user@equipo user]$
Este privkey.pem va a estar encriptado bajo la passphrase que colocamos en el paso anterior, lo que significa que cada vez que se levante el apache, pediría la passphrase para utilizar la key. Para evitar esto, podemos quitar la passphrase de privkey.pem y generar el server.key sin la passphrase, con el siguiente comando:
[user@equipo user]$ openssl rsa -in privkey.pem -out server.key
Enter pass phrase for privkey.pem: password
writing RSA key
[user@equipo user]$
Luego de ejecutar estos dos comandos, vamos a tener:
1) server.key
2) server.csr
[user@equipo user]$ ls -l
total 12
-rw-r--r-- 1 user group 963 Feb 3 10:20 privkey.pem
-rw-r--r-- 1 user group 761 Feb 3 10:20 server.csr
-rw-r--r-- 1 user group 887 Feb 3 10:21 server.key
[user@equipo user]$

Para evitar errores con los certificados renombramos los mismos colocando el CommonName seguido de la extensión correspondiente, siguiendo el ejemplo anterior quedaría:
[user@equipo user]$ ls -l
total 12
-rw-r--r-- 1 user group 963 Feb 3 10:20 empresa.empresa.com.ar.pem
-rw-r--r-- 1 user group 761 Feb 3 10:20 empresa.empresa.com.ar.csr
-rw-r--r-- 1 user group 887 Feb 3 10:21 empresa.empresa.com.ar.key
[user@equipo user]$
El siguiente paso, es solicitar a VeriSign (o la entidad deseada) el certificado correspondiente a nuestro server.key. Para esto, la entidad va a solicitar el server.csr (Certificate Sign Request). Al cabo de unos días, la entidad emitirá un archivo server.cert (o server.crt) que deberá ser utilizado única y exclusivamente con el server.key que se utilizó para generar el server.csr
Luego, lo que queda es configurar el apache para que utilice nuestros archivos. Esto se realiza colocando las siguientes directivas en la configuración del virtualhost correspondiente a nuestro dominio seguro:
SSLCertificateFile /path/to/certs/server.cert
SSLCertificateKeyFile /path/to/certs/server.key

Debido a que el server.key y el server.cert tienen que estar SIEMPRE relacionados, hay que verificar que el cert instalado sea correspondiente a esa key.
Si instalamos un cert con una key que no corresponde, luego de reiniciar el apache, en el error.log, veremos un error similar al siguiente:
[Thu Nov 04 17:06:18 2010] [error] Unable to configure RSA server private key
[Thu Nov 04 17:06:18 2010] [error] SSL Library Error: 185073780 error:0B080074:x509
certificate routines:X509_check_private_key:key values mismatch

