Instalar certificado https autofirmado en CentOS 7 y Nginx

Vamos a instalar un certificaddo ssl para nuestro servidor Nginx para servir https. Hay que tener en cuenta que usar un certificado autofirmado que no esta emitido por una institución certificadora en el navegador nos mostrará el mensaje de sitio inseguro a pesar de contar con el https. Esto no es problema para un uso privado o controlado de algún sistema o aplicación web.

Verificamos si ya tenemos instalado openssl

 yum info openssl

si no lo tenemos instalado, procedemos

 yum install openssl

abrimos el puerto 443 que es para https

 firewall-cmd --zone=public --add-port=443/tcp --permanent

reiniciamos

 firewall-cmd --reload

Ingresamos a

 cd /etc/pki/tls/misc/

Luego creamos en entidad certidicadora

 ./CA -newca

Presionamos enter, agregamos una clave nueva y repetimos la clave

 Enter PEM pass phrase:
 Verifying - Enter PEM pass phrase:

Completamos los siguientes campos

El pais

 Country Name (2 letter code) [XX]:PE

Ciudad

 State or Province Name (full name) []:TRUJILLO
 Locality Name (eg, city) [Default City]:TRUJILLO

Nombre de la empresa

 Organization Name (eg, company) [Default Company Ltd]:NOMBRE EMPRESA

Giro de negocio

 Organizational Unit Name (eg, section) []:TURISMO

Nombre del server

 Common Name (eg, your name or your server's hostname) []:nombreservidor

Email

 Email Address []:administracion@correo.com

Estos campos los dejamos vacios

 A challenge password []:
 An optional company name []:

Ingresamos una vez mas nuestra clave

 Enter pass phrase for /etc/pki/CA/private/./cakey.pem:

Ahora crear los certificados

 ./CA -newreq-nodes

Se presentará los campos anteriores. Igualmente completamos y luego de terminar

Ahora creamos la clave

 ./CA -sign

Luego ingresamos nuestra clave

 Enter pass phrase for /etc/pki/CA/private/cakey.pem:

Damos YES 2 veces para terminar

Luego cambiamos de nombre a nuestro certificado y clave

 mv newcert.pem https.crt
 mv newreq.pem https.key

Luego movemos los archivos

 mv https.crt /etc/pki/tls/certs/
 mv https.key /etc/pki/tls/private

Luego aplicamos los certificados y key a nginx. Editamos.

 /etc/nginx/conf.d/mistio.conf

Agregamos redirección del puerto 80 al 443 y el respectivo certificado y key

server {
        listen 80;
       	server_name sitio.com; 
        return 301 https://$host$request_uri;



}

server {
        listen 443 ssl;
       	server_name sitio.com; #ip o dominio del sitio
        
		ssl_certificate /etc/pki/tls/certs/https.crt;
		ssl_certificate_key /etc/pki/tls/private/https.key;        
        
        root   /var/www/html/sitio.com/; #ruta principal del sitio
}

Verificamos

 nginx -t

Reiniciamos nginx

systemctl restart nginx

Luego ingresamos a nuestro enlace https en nuestro navegador y veremos el siguiente mensaje. Este mensaje es normal porque el certificado no es emitido por una institución certificadora. Solo agregaremos nuestra excepción para nuestra url y con eso ya podemos usar o servir https.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *