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 opensslsi no lo tenemos instalado, procedemos
yum install opensslabrimos el puerto 443 que es para https
firewall-cmd --zone=public --add-port=443/tcp --permanentreiniciamos
firewall-cmd --reloadIngresamos a
cd /etc/pki/tls/misc/Luego creamos en entidad certidicadora
./CA -newcaPresionamos 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]:PECiudad
State or Province Name (full name) []:TRUJILLO
Locality Name (eg, city) [Default City]:TRUJILLONombre de la empresa
Organization Name (eg, company) [Default Company Ltd]:NOMBRE EMPRESAGiro de negocio
Organizational Unit Name (eg, section) []:TURISMONombre del server
Common Name (eg, your name or your server's hostname) []:nombreservidor Email Address []:administracion@correo.comEstos 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-nodesSe presentará los campos anteriores. Igualmente completamos y luego de terminar
Ahora creamos la clave
./CA -signLuego 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.keyLuego movemos los archivos
mv https.crt /etc/pki/tls/certs/ mv https.key /etc/pki/tls/privateLuego aplicamos los certificados y key a nginx. Editamos.
/etc/nginx/conf.d/mistio.confAgregamos 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 -tReiniciamos nginx
systemctl restart nginxLuego 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.


