Convertirnos en Autoridad de Certificación

Generar certificado AC y confianza

Generar la clave privada de la Autoridad de Certificación. Nos solicitará una contraseña para protegerla.

user@server-carpet:~$ openssl genrsa -des3 -out CA_Carpet4You.key 2048

Generamos el certificado raíz para nuestra AC:

user@server-carpet:~$ openssl req -x509 -new -nodes -key CA_Carpet4You.key -sha256 -days 365 -out CA_Carpet4You.pem

Nos solicitará la contraseña de nuestra clave privada de AC, así como una serie de datos para el certificado raíz:

Enter pass phrase for CA_Carpet4You.key:
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]:ES
State or Province Name (full name) [Some-State]:Badajoz
Locality Name (eg, city) []:El Carrascalejo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Carpet4You Trust
Organizational Unit Name (eg, section) []:Trust Service Management
Common Name (e.g. server FQDN or YOUR name) []:AC Carpet4You Trust
Email Address []:[email protected]

Importar certificado AC en dispositivo

Normalmente no debemos importar ningún certificado raíz puesto que en el Sistema Operativo ya vienen añadidos. En nuestro caso, debemos importarlo manualmente.

Para importar el certificado debemos navegar en los ajustes del navegador Chrome hasta chrome://settings/security. Una vez aquí hacemos clic en Gestionar certificados.

En la pantalla que nos aparece debemos desplazarnos hasta la sección Entidades de certificación raíz de confianza y hacer clic en Importar.

Seleccionamos el archivo CA_Carpet4You.pem generado de forma previa. Veremos un aviso al importarlo:

Captura de pantalla durante la importación del certificado AC


Creción de certificado firmado por nuestra CA

Private key

Crearemos nuestra clave privada para el servidor:

user@server-carpet:~$ openssl genrsa -out www.carpet4you.site.key 2048

CSR

Iniciamos una Certificate Signing Request (CSR):

user@server-carpet:~$ openssl req -new -key www.carpet4you.site.key -out www.carpet4you.site.csr

Archivo de configuración

Lo siguiente que haremos es crear el certificado utilizando la CSR, la clave privada de CA, el certificado de nuestra CA y un certificado de configuración que vamos a crear a continuación.

En este archivo, que llamaremos www.carpet4you.site.ext añadiremos el siguiente contenido:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = www.carpet4you.site

Generar certificado final

openssl x509 -req -in www.carpet4you.site.csr -CA CA_Carpet4You.pem -CAkey CA_Carpet4You.key -CAcreateserial \
-out www.carpet4you.site.crt -days 90 -sha256 -extfile www.carpet4you.site.ext

Ahora tendremos varios archivos:

user@server-carpet:~$ ll ww*
-rw-rw-r-- 1 user user 1570 oct 24 21:30 www.carpet4you.site.crt
-rw-rw-r-- 1 user user 1147 oct 24 21:21 www.carpet4you.site.csr
-rw-rw-r-- 1 user user  210 oct 24 21:28 www.carpet4you.site.ext
-rw------- 1 user user 1679 oct 24 20:47 www.carpet4you.site.key

Utilizar certificado en Apache

Modificamos el archivo /etc/apache2/sites-available/www.carpet4you.site.conf para que pase a ser de la siguiente manera:

<VirtualHost *:443>
    ServerName www.carpet4you.site
    DocumentRoot /var/www/html
    SSLEngine on
    SSLCertificateFile /home/user/www.carpet4you.site.crt
    SSLCertificateKeyFile /home/user/www.carpet4you.site.key
</VirtualHost>

Ahora no aparecerá ningún error al cargar la página:

Captura de pantalla durante la importación del certificado AC


Si hacemos clic en los detalles del certificado para ver la ruta de certificación veremos:

Captura de pantalla durante la importación del certificado AC