Ampliando el último tutorial de Let’s Encrypt sobre certificados SSL/TLS gratuitos, en este artículo vamos a demostrar cómo obtener e instalar certificados SSL/TLS gratuitos emitidos por la Autoridad de Certificación Let’s Encrypt para el servidor web Apache en las distribuciones CentOS/RHEL 7/6 y Fedora también.
Si deseas instalar Let’s Encrypt para Apache en Debian y Ubuntu, sigue esta guía a continuación:
Configurar Let’s Encrypt para asegurar Apache en Debian y Ubuntu
Entorno de Prueba

Requisitos
- A registered domain name with valid
A
records to point back to your server public IP Address. - Servidor Apache instalado con el módulo SSL habilitado y el Alojamiento Virtual habilitado en caso de que estés alojando varios dominios o subdominios.
Paso 1: Instalar el Servidor Web Apache
1. Si aún no está instalado, el demonio httpd se puede instalar emitiendo el siguiente comando:
# yum install httpd
2. Para que el software de Let’s Encrypt funcione con Apache, asegúrate de que el módulo SSL/TLS esté instalado emitiendo el siguiente comando:
# yum -y install mod_ssl
3. Finalmente, inicia el servidor Apache con el siguiente comando:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
Paso 2: Instalar el Certificado SSL de Let’s Encrypt
4. La metodo más simple para instalar el cliente de Let’s Encrypt es clonando el repositorio de github en su sistema de archivos. Para instalar git en su sistema debe habilitar los repositorios Epel con el siguiente comando.
# yum install epel-release
5. Una vez que los repositorios Epel se agregaron en su sistema, avance y instale el cliente de git ejecutando el comando de abajo:
# yum install git
6. Ahora, una vez que ha instalado todas las dependencias requeridas para manejar Let’s Encrypt, vaya al directorio /usr/local/
y comience a extraer el cliente de Let’s Encrypt desde su repositorio oficial de github con el siguiente comando:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
Paso 3: Obtener un Certificado SSL de Let’s Encrypt gratuito para Apache
7. El proceso de obtener un certificado de Let’s Encrypt gratuito para Apache es automatizado para CentOS/RHEL gracias al plugin de apache.
Vamos a ejecutar el comando de script de Let’s Encrypt para obtener un certificado SSL. Vaya al directorio de instalación de Let’s Encrypt desde /usr/local/letsencrypt
y ejecute el comando letsencrypt-auto
proporcionando la opción --apache
y la bandera -d
para cada subdominio que necesite un certificado.
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld

8. Proporcione la dirección de correo electrónico que utilizará Let’s Encrypt para recuperar su clave perdida o para avisos urgentes y presione Enter para continuar.

9. Aceptar los términos de la licencia haciendo clic en la tecla Enter.

10. En CentOS/RHEL, por defecto, el servidor Apache no utiliza el concepto de separar los directorios para los hosts habilitados de los hosts disponibles (inactivos) como lo hacen las distribuciones basadas en Debian.
Además, la hospedaje virtual está desactivado por defecto. La declaración de Apache que especifica el nombre del servidor (ServerName) no está presente en el archivo de configuración de SSL.
Para activar esta directiva, Let’s Encrypt le pedirá que seleccione un virtual host. Como no encuentra ningún Vhost disponible, seleccione el archivo ssl.conf
para que sea modificado automáticamente por el cliente de Let’s Encrypt y presione Enter para continuar.

11. A continuación, elija el método Easy para las solicitudes HTTP y presione Enter para avanzar.

12. Finalmente, si todo salió bien, se mostrará un mensaje de felicitación en la pantalla. Presione Enter para liberar el indicador.

¡Eso es todo! Ha emitido con éxito un certificado SSL/TLS para su dominio. Ahora puede navegar por su sitio web utilizando el protocolo HTTPS.
Paso 4: Probar el cifrado gratuito de Let’s Encrypt en el dominio
13. Para probar la integridad de la conexión SSL/TLS de su dominio, visite el siguiente enlace y pruebe su certificado en su dominio.
https://www.ssllabs.com/ssltest/analyze.html

14. Si recibe una serie de informes sobre las vulnerabilidades de su dominio en las pruebas realizadas, entonces necesita solucionar urgentemente esos agujeros de seguridad.
Una calificación general de clase C hace que tu dominio sea muy inseguro. Para solucionar estos problemas de seguridad, abre el archivo de configuración SSL de Apache y realiza los siguientes cambios:
# vi /etc/httpd/conf.d/ssl.conf
Busca la línea con la declaración SSLProtocol
y agrega -SSLv3
al final de la línea.

Ve más adentro en el archivo, busca y comenta la línea con SSLCipherSuite
colocando un #
delante de ella y agrega el siguiente contenido debajo de esta línea:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLOptions +StrictRequire

15. Después de haber realizado todos los cambios anteriores, guarda y cierra el archivo, luego reinicia el demonio de Apache para aplicar los cambios.
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]
16. Ahora, vuelve a probar el estado de encriptación de tu dominio, visitando el mismo enlace que antes. Para realizar nuevas pruebas, pulsa el enlace de Borrar caché desde el sitio web.
https://www.ssllabs.com/ssltest/analyze.html

Ahora deberías obtener una calificación de clase A en general, lo que significa que tu dominio está altamente asegurado.
Paso 4: Renovación Automática de Certificados Let’s Encrypt en Apache
17. Esta versión beta del software Let’s Encrypt emite certificados con fecha de vencimiento después de 90 días. Por lo tanto, para renovar el certificado SSL, debes ejecutar el comando letsencrypt-auto
nuevamente antes de la fecha de vencimiento, con las mismas opciones y banderas utilizadas para obtener el certificado inicial.
Un ejemplo de cómo renovar manualmente el certificado se presenta a continuación.
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
18. Para automatizar este proceso, crea el siguiente script bash proporcionado por GitHub erikaheidi, en el directorio /usr/local/bin/
con el siguiente contenido. (el script está ligeramente modificado para reflejar nuestro directorio de instalación de Let’s Encrypt).
# vi /usr/local/bin/le-renew-centos
Agrega el siguiente contenido al archivo le-renew-centos
:
!/bin/bash domain=$1 le_path='/usr/local/letsencrypt' le_conf='/etc/letsencrypt' exp_limit=30; get_domain_list(){ certdomain=$1 config_file="$le_conf/renewal/$certdomain.conf" if [ ! -f $config_file ] ; then echo "[ERROR] The config file for the certificate $certdomain was not found." exit 1; fi domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}") last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}') if [ "${last_char}" = "," ]; then domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}') fi echo $domains; } if [ -z "$domain" ] ; then echo "[ERROR] you must provide the domain name for the certificate renewal." exit 1; fi cert_file="/etc/letsencrypt/live/$domain/fullchain.pem" if [ ! -f $cert_file ]; then echo "[ERROR] certificate file not found for domain $domain." exit 1; fi exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s) datenow=$(date -d "now" +%s) days_exp=$(echo \( $exp - $datenow \) / 86400 |bc) echo "Checking expiration date for $domain..." if [ "$days_exp" -gt "$exp_limit" ] ; then echo "The certificate is up to date, no need for renewal ($days_exp days left)." exit 0; else echo "The certificate for $domain is about to expire soon. Starting renewal request..." domain_list=$( get_domain_list $domain ) "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}" echo "Restarting Apache..." /usr/bin/systemctl restart httpd echo "Renewal process finished for domain $domain" exit 0; fi
19. Concede permisos de ejecución para el script, instala el paquete bc y ejecuta el script para probarlo. Utiliza el nombre de tu dominio como un parámetro posicional para el script. Ejecuta los siguientes comandos para completar este paso:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld
20. Finalmente, utilizando la programación de Linux, añade un nuevo trabajo cron para ejecutar el script cada dos meses, asegurando que tu certificado se actualice antes de la fecha de vencimiento.
# crontab -e
Agrega la siguiente línea al final del archivo.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
¡Listo! Tu servidor Apache corriendo sobre un sistema CentOS/RHEL ahora está sirviendo contenido SSL utilizando un certificado SSL gratuito de Let’s Encrypt.
Source:
https://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/