Instalar certificado SSL en Apache

Instalar certificado SSL en Apache
En esta entrada explicaré como instalar un certificado SSL en el servidor web Apache. Vamos a instalar un certificado emitido por una entidad certificadora gratuita, llamada Let’s Encrypt. El objetivo no es otro que ofrecer una página web a través del protocolo seguro de transferencia de hipertexto, conocido como Https.
Conceptos básicos
Aunque existe muchísima información al respecto, me gustaría explicar por encima algunos conceptos importantes, que ayuden a la comprensión del artículo.
En primer lugar, ¿qué es https? Https es un protocolo de aplicación, basado en el protocolo http, destinado a la transferencia segura de datos de hipertexto. En palabras llanas, es una versión segura de http.
La siguiente pregunta es, ¿cómo hacemos seguro http? La respuesta la encontramos en el propio título del artículo, utilizando un cifrado basado en la seguridad de textos conocido como SSL/TLS. De esta forma crearemos un canal cifrado, cuyo nivel de cifrado dependerá del servidor remoto (en nuestro caso Apache) y del navegador utilizado por el cliente (debemos usar navegadores seguros).
Entonces, ¿qué es un certificado SSL? Deberíamos tener ya claro que un certificado SSL o certificado digital, sirve para que la comunicación entre el servidor y el cliente sea totalmente segura. Estos certificados constan de dos partes, una pública y una privada. A groso modo, la parte pública se encarga de cifrar la información y la privada de descifrarla. A continuación, podéis ver qué información adicional almacena un certificado.

La última cuestión que nos queda por responder es, ¿quién emite un certificado y como lo obtengo? Únicamente puede emitir certificados una Autoridad de Certificación, conocida como CA por su acrónimo en inglés Certification Authority. Por suerte desde noviembre de 2014 existe una CA gratuita llamada Let’s Encrypt, abalada por los grandes de internet. Si sentís curiosidad entrar en su web, cuyo link está en la sección de referencias.
Instalar certificado SSL de Let’s Encrypt en Apache
Si no lo tenéis y queréis instalar Apache, ver la siguiente entrada Liferay Bundle Tomcat conectado con Apache, donde explico cómo instalar un servidor web Apache en un sistema operativo Linux.
Lo primero es entrar por ssh a vuestro servidor. Los comandos de shell utilizados en este artículo son para Debian, es relativamente fácil encontrar en la web su equivalente para CentOS u otra distribución Linux. Para conocer el sistema operativo de vuestro servidor usar el comando hostnamectl.
# hostnamectl
Es posible que vuestro sistema operativo incluya un paquete de letsencrypt, de ser así úsalo, de lo contrario debemos instalar un cliente git para descargarlo del repositorio oficial.
# apt-get install git
Ir a un directorio cualquiera:
# cd /home/debian
Clonamos el proyecto, nos ubicamos dentro del directorio creado y lanzamos el script de configuración.
# git clone https://github.com/letsencrypt/letsencrypt # cd letencrypt # ./letsencrypt-auto --help # ./letsencrypt-auto --apache
Durante el proceso de configuración te solicitará el email y, si no está especificado, también el dominio. Debemos incluir los dominios separados por espacios o comas, os recomiendo incluir el dominio tanto con «www» como sin él. En mi caso quedaría así:
piensaenbinario.es www.piensaenbinario.es
Llegados a este punto ya tenemos el certificado correctamente instalado en nuestro servidor web, de aquí en adelante veremos cómo configurar un CMS concreto, WordPress, para funcionar bajo el protocolo https.
Configurar WordPress con HTTPS
El último paso independientemente a la configuración del servidor, es configurar nuestro WordPress para utilizar el protocolo https en vez del http. Lo primero será forzar el https tanto en el login como en la parte administrativa, para ello debemos modificar el fichero config.php añadiendo las siguientes líneas:
define(‘FORCE_SSL_LOGIN’, true);
define(‘’FORCE_SSL_ADMIN’, true);
A continuación, iremos a la sección Ajustes -> Generales, y cambiaremos las direcciones URL del sitio y de WordPress, de http a https. Es probable que esta acción nos saque del portal, no hay problema volvemos a entrar y listo.

Llegados a este punto es recomendable realizar un backup de la BBDD, podéis usar el mysqldump del propio MySql o alguna herramienta como Navicat o HeidiSQL, que utilicéis normalmente.
Este paso no tiene por qué ser necesario, sin embargo, es bastante probable que en algunas páginas nuestro navegador diga que la página no es segura, aunque se esté usando el protocolo https. Esto se debe a que quedan algunas imágenes o scripts de javascript, siguen utilizando el protocolo http, yo recomiendo instalar un plugin de WordPress llamado Really Simple SSL para que haga las redirecciones de las peticiones a estos recursos.
Si queréis comprobar que todo está configurado correctamente, podéis utilizar la página web de la sección de referencias “Comprobar certificado”. Únicamente debéis añadir la URL del portal y pasado un rato os dará el informe con su estado.
Referencias
Apache server
Comprobar certificado
https://www.ssllabs.com/ssltest/analyze.html
HTTPS
https://es.wikipedia.org/wiki/Protocolo_seguro_de_transferencia_de_hipertexto
HTTPS en WordPress
https://miposicionamientoweb.es/migrar-wordpress-https/
Let’s Encrypt
Really Simple SSL
https://es.wordpress.org/plugins/really-simple-ssl/
SSL
https://es.wikiedia.org/wiki/Seguridad_de_la_capa_de_transporte
Tienes que estar conectado para dejar un comentario.