Cómo configurar un certificado digital para nuestra web

En este escenario se ha solicitado un certificado digital a 1and1 siendo la entidad certificadora GeoTrust. 1and1 nos envía unos archivos, pero posiblemente no nos sirvan y tengamos que generarlo todo para nuestro servidor y nuestro dominio.

 

Solicitud y Generación del Certificado Digital

1. Generamos la clave privada (sin encriptación (no passwd). El objetivo de esto es que el servidor Apache no solicite la clave en cada reinicio).

1
openssl genrsa -out www.mydomain.com.key 2048

2. Generamos un código CSR (Certificate Signing Request). Esta parte se hace sobretodo por seguridad, así no tendremos que enviar nuestra clave privada a la hora de solicitar el certificado.

1
openssl req -new -key www.mydomain.com.key -out www.mydomain.com.csr

Aquí irá haciendo preguntas. Es importante escribir en Common Name la URL para la que se ha solicitado el dominio.
En principio no es necesario rellenar el e-mail ni los campos opcionales.

Si se quiere visualizar el contenido del archivo csr lo podemos hacer de la siguiente manera:

1
openssl req -noout -text -in www.mydomain.com.csr

Una vez hemos hecho eso, copiamos el contenido del csr, ya que lo necesitaremos más adelante.

Vamos a la web de «Reissue QuickSSL, RapidSSL or Partner Orders» ( https://knowledge.geotrust.com/support/knowledge-base/index?page=content&id=SO5989 ) y seguimos los pasos.
Desde la URL donde nos manda le damos a volver a emitir certificado y pegamos el contenido del archivo CSR.

Una vez finalizado ese proceso, recibiremos un correo para aprobar los cambios y posteriormente nos enviarán los certificados.

Es el momento de terminar de configurar el servidor.

 

Parte Servidora

En el correo que nos envían hay un apartado Web Server CERTIFICATE, esto se trata de la clave pública, que podemos guardar por ejemplo en /etc/apache2/ssl/mydomain/public.crt
Otro apartado es INTERMEDIATE CA, que guardamos en /etc/apache2/ssl/mydomain/intermediate.crt

Por último, dentro del virtual host de Apache:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName mydomain.com
        ServerAlias www.mydomain.com

        SSLEngine on
        SSLProtocol all
        SSLCertificateFile      /etc/apache2/ssl/mydomain/public.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/mydomain/www.mydomain.com.key
        SSLCertificateChainFile /etc/apache2/ssl/mydomain/intermediate.crt

        RewriteEngine On
        RewriteOptions inherit

        DocumentRoot /opt/web/www.mydomain.com

        <Directory /opt/web/www.mydomain.com>
                // Options
                Order Deny,Allow
        </Directory>

        CustomLog /var/log/apache2/access_mydomain_ssl.log combined
        ErrorLog /var/log/apache2/error_mydomain_ssl.log

    </VirtualHost>
</IfModule>