domingo, 29 de mayo de 2016

Certificados SSL para Web Server

La instalación de certificados sobre un web server es muy sencilla. En este post vamos a mostrar como instalar un certificado en Apache Web Server.

En sintesis primeramente debemos escoger un proveedor de certificados digitales para hacer el proceso de compra con el, este proveedor requiere que le enviemos una solicitud conocido como archivo CSR, es muy importante generar este archivo CSR en el servidor donde vamos a instanciar el web server y que al mismo tiempo debe ser el mismo donde se colocara el certificado. Despues de que enviemos el CSR el proveedor nos enviara un archivo CRT, con este archivo podremos configurar el certificado.




Realizáremos paso a paso el proceso en el interprete de comandos de GNU/Linux, como buena practica recomiendo llamar al archivo igual que el FQDN a certificar, para nuestro caso vamos a suponer que nuestro objetivo es certificar a www.midominio.com.

Creamos una llave de seguridad de 2048 bits, se nos pedirá que ingresemos el passphrase. Desde luego es muy importante guardar el passphrase.
openssl genrsa -des3 -out www.midominio.com.key 2048

Creamos el archivo csr a partir de la llave que creamos anteriormente y con una vigencia de 365 dias. Se nos pedirá información del FQDN a certificar y datos de ubicación de la empresa que solicita el certificado.
openssl req -days 365 -new -key www.midominio.com.key -out www.midominio.com.csr

Ahora ya podemos enviarle el csr al proveedor para que el nos regrese el CRT, este crt debe incluir el certificado para el webserver y un certificado de autoridad (CA). Ya que tenemos todo, podemos configurar los certificados en la secciones de host virtuales en el FQDN que estamos configurando, se modificaran los siguientes parametros:
SSLCertificateFile: Archivo CRT con el certificado para el web server.
SSLCertificateKeyFile: Archivo llave
SSLCACertificateFile: Archivo CRT con el CA.

Despues de hacer estos cambios se reiniciara el web server y por cuestiones de seguridad, cada reinicio o inicialización del servicio pedirá la clave, por un lado es bueno que solo las personas autorizadas puedan reiniciar el servicio web, pero que pasa si el servidor completo se reinicia... el web server no arrancara por que se quedara esperando el passphrase. Existe una manera de evitar esto y es reemplazar la llave por otra que no requiera passphrase, eso se puede reaizar con el siguiente comando:

openssl genrsa -out www.midominio.com.key.nopass 2048

Finalmente solo reemplazamos en el parametro del Apache "SSLCertificateKeyFile" con valor www.midominio.com.key por www.midominio.com.key.nopass