Introducción
SSL (significa Secure Sockets Layer ) y su sucesor, TLS (significa Transport Layer Security ) son protocolos criptográficos para asegurar la comunicación a través de Internet. Se puede usar para crear una conexión segura a un sitio web.
Introducción
Asegúrese de que Nginx y OpenSSL estén instalados en su servidor. En este artículo, demostraremos el proceso generando un certificado SSL autofirmado.
Paso 1: cree un directorio para el certificado y la clave privada
Crearemos un directorio (y lo ingresaremos) dentro de / etc / nginx (suponiendo que ese directorio sea el directorio de configuración de Nginx), mediante:
sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl # we'll perform our next few steps in this dir
Paso 2: Crear clave privada y CSR
Comencemos creando la clave privada del sitio. En este ejemplo, utilizaremos la clave de 4096 bits para una mayor seguridad. Tenga en cuenta que 2048 bits también es seguro, ¡pero NO USE UNA CLAVE PRIVADA DE 1024 BITS!
sudo openssl genrsa -out example.com.key 4096
Ahora, cree una solicitud de firma de certificado (CSR) para firmar el certificado. Utilizaremos SHA-2 de 512 bits. Tenga en cuenta la -sha512
opción.
sudo openssl req -new -key example.com.key -out example.com.csr -sha512
Aparecerá una lista de campos que deben completarse. ¡Asegúrese de que Common Name
esté configurado con su nombre de dominio! Además, dejar A challenge password
y en An optional company name
blanco.
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]:US
State or Province Name (full name) [Some-State]:CA
Locality Name (eg, city) []:LosAngeles
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Security
Common Name (e.g. server FQDN or YOUR name) []:*.example.com
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Paso 3: firma tu certificado
¡Casi termino! Ahora solo tenemos que firmarlo. No olvide reemplazar 365 (caducidad después de 365 días) por la cantidad de días que prefiera.
sudo openssl x509 -req -days 365 -in example.com.csr -signkey example.com.key -out example.com.crt -sha512
Ahora, hemos terminado de hacer un certificado autofirmado.
Paso 4: configurar
Abra el archivo de configuración SSL de ejemplo de Nginx:
sudo nano /etc/nginx/conf.d/example_ssl.conf
Descomente dentro de la sección bajo la línea Servidor HTTPS . Haga coincidir su configuración con la información a continuación, reemplazando example.com
la server_name
línea con su nombre de dominio o dirección IP. También configure su directorio raíz.
# HTTPS server
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp384r1;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4; # no RC4 and known insecure cipher
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
Luego reinicie Nginx.
service nginx restart
Ahora, visite su sitio web con una https
dirección ( https://your.address.tld
). Su navegador web mostrará una conexión segura utilizando su certificado autofirmado.