Para tener un certificado SSL para nuestro servidor Apache solemos generar el request y lo mandamos a Thawte, Verisign… para que lo firmen y nos lo devuelvan validado.

A continuación el procedimiento para poder generar uno para pruebas sin tener que pasar por entidades certificadoras…

Creamos la clave del servidor:
openssl genrsa -out ./server.key 1024

Si quisieramos crear esta clave con encriptación, es el mismo comando pero con des3:
openssl genrsa -des3 -out ./server.key 1024

Podemos ver el contenido de la clave privada que acabamos de crear mediante:
openssl rsa -noout -text -in server.key

Creamos la petición de certificado:
openssl req -new -key server.key -out server.csr
FQDN: Common Name: foo.example.com
or Wildcard: Common Name: *.example.con

Auto-firmamos la clave (incrementa el número serie “N” para cada nuevo certificado:
openssl x509 -req -days 365 -set_serial N -in server.csr -signkey server.key -out server.crt

Combinamos ambas claves key y cert en un único archivo pem para mayor simplicidad:
cat server.key server.crt > combined.pem

Ver los detalles del certificado elaborado:
openssl x509 -in combined.pem -noout -text

Copiamos el certificado en su ubicación final:
cp combined.pem /etc/ssl/certs/