Cómo crear un certificado SSL autofirmado para Nginx en CentOS 7
Normalmente, los servidores configurados para https requieren un certificado X509 certificado por una organización CA oficial. Cuando un cliente se conecta a un servidor https, verifica la exactitud del certificado con la clave *** de la CA. Sin embargo, obtener un certificado de CA es muy problemático y requiere una determinada tarifa. Por lo tanto, algunas instituciones pequeñas suelen utilizar certificados autofirmados. Es decir, se convierten en su propia CA y firman sus propios certificados de servidor.
Este proceso tiene dos pasos principales, primero generar su propio certificado de CA y luego generar y firmar un certificado de servidor único. Utilizo OpenSSL para generar un certificado autofirmado.
El primer paso es crear un certificado de CA:
openssl genrsa -des3 -out my-ca.key 2048
openssl req -new -x509 - días 3650 -key my-ca.key -out my-ca.crt
Esto generará los archivos my-ca.key y my-ca.crt. El primero contiene la clave necesaria para firmar con my-ca.crt y debe mantenerse seguro. Este último está disponible públicamente. El comando anterior establece un período de validez de 10 años para my-ca.key.
Puedes usar el comando
openssl x509 -in my-ca.crt -text -noout
para ver el contenido de my-ca.crt. archivo.
Con el certificado CA, puedes generar un certificado para el servidor:
openssl genrsa -des3 -out mars-server.key 1024
openssl req - nuevo -key mars-server.key -out mars- server.csr
openssl x509 -req -in mars-server.csr -out mars-server.crt -sha1 -CA my-ca.crt - CAkey my-ca.key -CAcreateserial -days 3650
Los dos primeros comandos generan los archivos clave y csr, y el último comando crea el certificado de firma x509 para mars-server.csr a través de my-ca.crt .
Cabe señalar que al ejecutar el segundo comando anterior, la opción de nombre común debe ser el nombre de dominio del servidor, de lo contrario aparecerá un mensaje adicional cada vez que el usuario acceda a través del protocolo https.
Puedes usar el comando
openssl x509 -in mars-server.crt -text -noout
para ver el contenido de mars-server.crt. archivo.
2. Configure el servidor Apache
Primero, cree el directorio /etc/apache2/ssl y agregue my-ca.crt, mars-server.key y mars-server. que acaba de crear. El archivo .crt se copia en este directorio.
Ejecute el comando
a2emod ssl
Active el módulo SSL de Apache y luego agregue el host virtual en /etc/apache2/sites-enable/.
El proceso de agregar es similar a agregar un host virtual normal, pero el puerto del host es 443 y la configuración es la siguiente:
NameVirtualHost *: 443
lt VirtualHost *: 443gt; ;
Nombre del servidor localhost
DocumentRoot /var/www
SSLEngine activado
SSLCipherSuite ALTO: MEDIO
Protocolo SSL all -SSLv2
SSLCertificateFile /etc/apache2/ssl/mars-server.crt
SSLCertificateKeyFile /etc/apache2/ssl/mars-server.key
SSLCACertificateFile /etc/apache2/ssl/ my-ca.crt
lt; Directorio /var /wwwgt;
Orden denegada, permitir
Permitir desde localhost
lt; /Directorygt;
lt;/VirtualHostgt;
lt;VirtualHost *: 80gt;
Nombre del servidor localhost
DocumentRoot /var/www
lt; Directorio /var/wwwgt; Orden denegada, permitir
Permitir desde localhost
lt;/Directorygt;
lt; /VirtualHostgt;
La configuración anterior garantiza que los usuarios vean el mismo contenido en el puerto 443 y el puerto 80, solo que con protocolos diferentes. Después de cambiar la configuración, puede reiniciar el servidor Apache e ingresar la contraseña para mars-server.key. Utilice un navegador para visitar
https://localhost/
Debería ver un cuadro de diálogo emergente que le pedirá que confirme si confía en el certificado del sitio web. Después de seleccionar confianza, puede. puede ver el contenido del sitio web.
Dado que la mayoría de los servidores Apache se inician automáticamente cuando se inicia el servidor, para evitar ingresar una contraseña al iniciar Apache, puede usar el siguiente comando para generar un archivo mars-server.key sin cifrar:
p >openssl rsa -in mars-server.key -out mars-server.key.insecure
Reemplace el archivo de clave original con el mars-server.key.insecure recién generado.