Cómo crear un certificado SSL (activar https) en Nginx para Ubuntu 14.04 o Debian

Introducción

TLS, o la seguridad de capa de transporte, y su predecesor SSL, siglas de Secure Sockets Layer, son protocolos web utilizan para envolver el tráfico normal en una protegida, envoltura de cifrado.
Utilizando esta tecnología, los servidores pueden enviar tráfico de forma segura entre el servidor y el cliente sin la preocupación de que los mensajes serán interceptados y leídos por un tercero. El sistema de certificados también ayuda a los usuarios en la verificación de la identidad de los sitios que se conectan con.
En esta guía, le mostraremos cómo instalar un certificado SSL autofirmado para su uso con un servidor web Nginx en un servidor de Ubuntu 14.04. Un certificado autofirmado no validará la identidad de su servidor para sus usuarios, ya que no está firmado por una de las autoridades de certificación de confianza de su navegador web, pero le permitirá cifrar las comunicaciones con sus clientes web.

Requisitos previos

Para empezar a trabajar en esta guía, usted tendrá que configurar algunas cosas básicas en su servidor.
Usted debe tener un usuario no root disponibles que tiene sudo privilegios. Usted puede aprender cómo configurar una cuenta de dicho usuario siguiendo los pasos 1-4 en nuestra configuración inicial del servidor de Ubuntu 14.04 .
Después de eso, usted también tendrá que tener el servidor web Nginx instalado. Si desea instalar un todo LEMP (Linux, Nginx, MySQL, PHP) pila en su servidor, puede seguir nuestra guía en la creación de LEMP en Ubuntu 14.04 .
Si lo que desea es el servidor web Nginx, en su lugar puede simplemente escribir:
 
sudo apt-get update sudo apt-get install nginx

Paso uno - Crear el certificado SSL

Podemos empezar por la creación de un directorio que se utiliza para mantener toda nuestra información de SSL. Debemos crear esta bajo el directorio de configuración de Nginx:
 
 sudo mkdir /etc/nginx/ssl 
 
Ahora que tenemos un lugar para colocar nuestros archivos, podemos crear los archivos de claves y certificados SSL en un solo movimiento, escribiendo:
 
 sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt 

Se le pedirá una serie de preguntas. Antes de que vayamos más de eso, vamos a echar un vistazo a lo que está sucediendo en el comando que estamos emitiendo:
  • openssl: Se trata de la herramienta de línea de comandos básicos para crear y gestionar certificados de OpenSSL, llaves y otros archivos.
  • req: Este subcomando especifica que queremos usar solicitud de certificado de firma X.509 gestión (RSE). El "X.509" es un estándar de la infraestructura de clave pública que SSL y TLS se adhiere a por su llave y gestión de certificados. Queremos crear un nuevo certificado X.509, por lo que estamos utilizando este subcomando.
  • -x509: Esto modifica aún más el subcomando anterior diciendo la utilidad que queremos hacer un certificado autofirmado en lugar de generar una solicitud de firma de certificado, como normalmente sucedería.
  • -nodes: Esto le dice OpenSSL para saltarse la opción de asegurar nuestro certificado con una frase de contraseña. Necesitamos Nginx para poder leer el archivo, sin intervención del usuario, cuando el servidor se inicia. Una frase de paso sería evitar que esto suceda, porque tendríamos que entrar en él después de cada reinicio.
  • -days 365: Esta opción establece la cantidad de tiempo que el certificado se considerará válido. Nos pusimos por un año aquí.
  • rsa -newkey: 2048: Esto especifica que queremos generar un nuevo certificado y una nueva clave al mismo tiempo. No hemos creado la clave que se requiere para firmar el certificado en un paso anterior, por lo que necesitamos para crear junto con el certificado. El rsa:2048 parte dice que para hacer una clave RSA que es de 2048 bits de longitud.
  • -keyout: Esta línea le dice OpenSSL dónde colocar el archivo de clave privada generada que estamos creando.
  • salida privado: Esto le dice OpenSSL dónde colocar el certificado que estamos creando.
Como dijimos anteriormente, estas opciones crearán tanto un archivo de claves y un certificado. Estaremos preguntamos algunas preguntas acerca de nuestro servidor para poder insertar correctamente la información en el certificado.
Rellene las instrucciones adecuadamente. La línea más importante es la que pide al Common Name (eg server FQDN or YOUR name) . Es necesario introducir el nombre de dominio que desea asociar con el servidor. Puede introducir la dirección IP pública en su lugar si usted no tiene un nombre de dominio.
La totalidad de las indicaciones se verá algo como esto:
 
 Nombre País (código de 2 letras) [AU]: VE
 Estado o Provincia Nombre (nombre completo) [Algunos-Estado]: Merida
 Localidad Nombre (por ejemplo, de la ciudad) []: Merida
 Nombre de la organización (por ejemplo, la empresa) [Internet Widgits Pty Ltd]: ULA
 Organizational Unit Name (por ejemplo, la sección) []: Facultad de Ingenieria
 Nombre común (por ejemplo, nombre de dominio completo del servidor o como tu nombre) []: your_domain.com
 Dirección de correo electrónico []: admin@your_domain.com

Tanto de los archivos que ha creado se colocará en el /etc/nginx/ssl directorio.

Paso dos - Configurar Nginx para utilizar SSL

Hemos creado nuestros archivos de claves y certificados bajo el directorio de configuración de Nginx. Ahora sólo tenemos que modificar nuestra configuración de Nginx para aprovecharse de ellos ajustando nuestros archivos de bloques de servidor. Usted puede aprender más sobre los bloques de servidor Nginx en este artículo.
Nginx versiones 0.7.14 y superiores (Ubuntu 14.04 incluye la versión 1.4.6) puede habilitar SSL en el mismo bloque de servidor como el tráfico HTTP regular. Esto nos permite configurar el acceso al mismo sitio de una manera mucho más sucinta.
Su bloque de servidor puede ser algo como esto:
 
 server {
         listen 80 default_server;
         # listen [::]: 80 default_server ipv6only = en;

         root / usr / share / nginx / html;
         index.htm index.html index;

         name_server your_domain.com;

         location / {
                 try_files $ uri uri $ / = 404;
         }
 }
 
Lo único que tendríamos que hacer para conseguir trabajo SSL en este mismo bloque de servidor, al tiempo que permite conexiones HTTP regulares, es añadir una de estas líneas:
 
 server {
         listen 80 default_server;
         # listen [::]: 80 default_server ipv6only = en;

         listen 443 ssl;

         root / usr / share / nginx / html;
         index.htm index.html index;

         name_server your_domain.com;
         /etc/nginx/ssl/nginx.crt ssl_certificate;
         /etc/nginx/ssl/nginx.key ssl_certificate_key;

         location / {
                 try_files $ uri uri $ / = 404;
         }
 }
 
Cuando haya terminado, guarde y cierre el archivo.
Ahora, todo lo que tienes que hacer es reiniciar Nginx para usar la nueva configuración:
 
 sudo service nginx restart 
 
Esto debe recargar la configuración de su sitio, ahora lo que le permite responder a HTTP y HTTPS (SSL).

Paso Tres - Pon a prueba tu programa de instalación

Su sitio debe ahora tener la funcionalidad SSL, pero debe probarlo para asegurarse.
En primer lugar, vamos a probar para asegurarse de que todavía podemos acceder al sitio con el uso de HTTP normal. En su navegador web, vaya a nombre de dominio de su servidor o la dirección IP:
 
 http: // server_domain_or_IP

Usted debe ver su página web normal. En mi ejemplo, yo estoy sirviendo a la página por defecto Nginx:
 
Nginx no SSL

Si usted recibe esta página, entonces su servidor sigue manejando peticiones HTTP correctamente.
Ahora, podemos comprobar si nuestro servidor puede utilizar SSL para comunicarse. Haga esto especificando el https en vez del protocolo http protocolo.
 
 https: // server_domain_or_IP

Usted probablemente recibirá una advertencia en su navegador web que se ve algo como esto:
 
Advertencia Nginx SSL

Con ello se espera. Se le está diciendo que no puede verificar la identidad del servidor al que está intentando conectarse, ya que no está firmado por una autoridad de certificación que el navegador se ha configurado para confiar. Desde que hemos creado un certificado autofirmado, esto tiene mucho sentido.
Haga clic en "Continuar de todas formas", "Continuar", o lo que sea opción similar está disponible. Usted debe ver a su sitio de nuevo:
 
Nginx SSL

Su navegador puede mostrar el "https" cruzaron en la barra de direcciones o un roto o tachado de "bloqueo" icono. Si hace clic en el icono de bloqueo, se puede ver un poco más de información acerca de la conexión:
 
Información Nginx SSL

Como puede ver, la cuestión es sólo que el navegador no puede verificar la identidad del servidor, ya que no está firmado por una autoridad de certificación que está configurado para confiar. La sección central muestra que la conexión está encriptada, sin embargo, por lo que hemos logrado ese objetivo.

Conclusión

Ha configurado el servidor Nginx para manejar tanto las peticiones HTTP y SSL. Esto le ayudará a comunicarse con los clientes de forma segura y evitar las partes externas de ser capaz de leer su tráfico.
Si usted está planeando sobre el uso de SSL para un sitio web público, es probable que debe adquirir un certificado SSL de una autoridad certificadora de confianza para evitar las advertencias de miedo de que nos llevaron a cada uno de sus visitantes.

Autor: Justin Ellingwood 
Tomado de: https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-nginx-for-ubuntu-14-04 

Comentarios

Entradas populares