Linux en español
Tutoriales

Apache con Let’s Encrypt en CentOS 8

8 minutos de lectura

He leído que Let’s Encrypt es libre, automatizado, y permite generar un certificado para el servidor web y otros usos. ¿Cómo puedo asegurar que Apache Let’s Encrypt los Certificados en CentOS 8?

Let’s Encrypt es un  software, automatizado, y abrir certificado de autoridad para su sitio web proporcionado por el servidor web Apache. Esta página muestra cómo utilizar Vamos a Cifrar para instalar un certificado SSL gratis para el servidor web Apache. Usted aprenderá la manera correcta de implementar Diffie-Hellman en su servidor para obtener SSL labs Un+ puntuación en un CentOS Linux 8.

Cómo asegurar Apache con certificados Let’s Encrypt en CentOS 8

El procedimiento es el siguiente a la obtención de un certificado SSL:

  1. Instalar SSL/TLS módulo para el servidor HTTP Apache en CentOS 8: sudo yum install mod_ssl
  2. Obtener acme.sh el software, ejecutar git clone https://github.com/Neilpang/acme.sh.git
  3. Crear un nuevo /.conocido/acme-desafío/ directorio:
  4. mkdir -p /var/www/html/.well-known/acme-challenge/
  5. Obtener un certificado SSL de su dominio: acme.sh –issue -w /DocumentRootPath/ -d your-domain
  6. Configurar TLS/SSL para Apache en CentOS Linux 8: vi /etc/httpd/conf.d/ssl.conf
  7. La instalación de un cron job para la renovación automática de SSL/TLS certificado
  8. Abrir el puerto 443 (HTTPS), usando firewall :sudo firewall-cmd –add-service=https

Nuestro ejemplo de configuración es la siguiente

Mi ejemplo el certificado SSL de Let’s Encrypt para asegurar Apache en CentOS 8
apache-vamos-a-cifrar-los-certificados-en-centos-8-1
Vamos a ver cómo instalar acme.sh cliente y utilizarlo en un CentOS 8 para obtener un certificado SSL de que Let’s Encrypt. Antes de empezar a aplicar todos los parches en CentOS 8:
sudo yum update

Paso 1 – Instalar mod_ssl para el Apache

Escriba el siguiente comando yum:
$ sudo yum install mod_ssl
apache-vamos-a-cifrar-los-certificados-en-centos-8-2

Paso 2 – Instalar acme.sh cliente Let’s Encrypt

Usted necesita instalar wget en CentOS 8, curl, bc, socat y git cliente en CentOS 8 en orden de uso acme.sh, ejecute:
$ sudo yum install wget, curl bc git socat

Last metadata expiration check: 0:06:51 ago on Wednesday 02 October 2019 05:49:51 PM UTC.
Package wget-1.19.5-7.el8_0.1.x86_64 is already installed.
Package curl-7.61.1-8.el8.x86_64 is already installed.
Dependencies resolved.
=========================================================================================
 Package                  Arch           Version                 Repository         Size
=========================================================================================
Installing:
 git                      x86_64         2.18.1-3.el8            AppStream         186 k
 socat                    x86_64         1.7.3.2-6.el8           AppStream         298 k
 bc                       x86_64         1.07.1-5.el8            BaseOS            129 k
Installing dependencies:
 git-core                 x86_64         2.18.1-3.el8            AppStream         4.1 M
 git-core-doc             noarch         2.18.1-3.el8            AppStream         2.3 M
 perl-Error               noarch         1:0.17025-2.el8         AppStream          46 k
 perl-Git                 noarch         2.18.1-3.el8            AppStream          77 k
 perl-TermReadKey         x86_64         2.37-7.el8              AppStream          40 k
 emacs-filesystem         noarch         1:26.1-5.el8            BaseOS             69 k
 
Transaction Summary
=========================================================================================
Install  9 Packages
 
Total download size: 7.1 M
Installed size: 38 M
Is this ok [y/N]: y

Clonar el repo

Ejecutar los siguientes comandos:

$ cd /tmp/
$ git clone https://github.com/Neilpang/acme.sh.git

A continuación, instale acme.sh cliente en su sistema, ejecute:

$ cd acme.sh/
$ sudo -i
# cd acme.sh/
# ./acme.sh --install

apache-vamos-a-cifrar-los-certificados-en-centos-8-3
Ahora tenemos el software necesario en el CentOS 8 servidor. Debe cerrar la terminal actual o ssh sesión y volver a abrir de nuevo para hacer el alias de tomar efecto. O escriba el siguiente comando de fuente:
$ sudo source ~/.bashrc
Compruebe que acme.sh de trabajo, ejecute:
# acme.sh --version
Ejemplos de productos:

https://github.com/Neilpang/acme.sh
v2.8.3

Paso 3 – Crear acme-desafío directorio

Escriba el siguiente comando mkdir. Asegúrese de que ha ajustado $D a real DocumentRoot ruta de acceso, como por sus necesidades:

# D=/var/www/html/
# mkdir -vp ${D}/.well-known/acme-challenge/
###---[ NOTE: Adjust permission as per your setup ]---###
# chown -R apache:apache ${D}/.well-known/acme-challenge/
# chmod -R 0555 ${D}/.well-known/acme-challenge/

También, crear un directorio para almacenar el certificado SSL:

mkdir -p /etc/httpd/ssl/cyberciti.biz/

Paso 4 – Crear dhparams.pem archivo

Ejecute el comando openssl:

# cd /etc/httpd/ssl/cyberciti.biz/
# openssl dhparam -out dhparams.pem -dsaparam 4096

apache-vamos-a-cifrar-los-certificados-en-centos-8-4

Activar servicio de Apache si no eanbled

Está ejecutando Apache? Si no iniciar el servicio de Apache de la siguiente manera utilizando el comando systemctl:

$ sudo systemctl status httpd.service
$ sudo systemctl enable httpd.service
$ sudo systemctl start httpd.service
$ sudo systemctl status httpd.service

apache-vamos-a-cifrar-los-certificados-en-centos-8-5

Asegúrese de que el puerto TCP 80 opend demasiado

Ejecute el siguiente firewall-cmd comando para activar el puerto TCP 80 en CentOS 8:

$ sudo firewall-cmd --permanent --add-service=http --zone=public
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-services --zone=public

Paso 5 – Obtener un SSL/TLS certificado de dominio

Emitir un certificado para su dominio. La sintaxis es:

# acme.sh --problema -w /path/to/www/htmlRoot/ -d tu-dominio-por ejemplo-com -k 2048
# acme.sh --problema -w /path/to/www/htmlRoot/ -d www.cyberciti.biz -k 4096
# acme.sh --problema -w /var/www/html/ -d centos8.cyberciti.biz-k 4096

apache-vamos-a-cifrar-los-certificados-en-centos-8-6

Paso 6 – Configurar Apache para usar SSL/TLS

Editar el archivo llamado /etc/httpd/conf.d/ssl.conf con un editor de texto como vi comando:
$ sudo vi /etc/httpd/conf.d/ssl.conf
Agregar/actualizar de la siguiente manera:

### Start config for port 443 #
Listen 443 https
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300
SSLCryptoDevice builtin
 
### Turn on HTTP2 support #
Protocols h2 http/1.1
 
### Redirect all http urls to https #
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L,QSA]
#################################################
# SSL/TLS config for domain centos8.cyberciti.biz #
#################################################
<VirtualHost centos8.cyberciti.biz:443>
 
        ### Log files  #
        ErrorLog logs/ssl_error_log
        TransferLog logs/ssl_access_log
        LogLevel warn
        SSLEngine on
 
        ### No more SSL3/2 #
        SSLProtocol             all -SSLv3
        SSLHonorCipherOrder on
        SSLCompression          off
        SSLSessionTickets       off
        SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
 
        ### Path to certs #
        SSLCertificateFile      /etc/httpd/ssl/cyberciti.biz/centos8.cyberciti.biz.cer
        SSLCertificateKeyFile   /etc/httpd/ssl/cyberciti.biz/centos8.cyberciti.biz.key
 
        #Forward Secrecy & Diffie Hellman ephemeral parameters
        SSLOpenSSLConfCmd DHParameters "/etc/httpd/ssl/cyberciti.biz/dhparams.pem"
 
        # HSTS (mod_headers is required) (15768000 seconds = 6 months)
        Header always set Strict-Transport-Security "max-age=15768000"
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory "/var/www/cgi-bin">
                SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
         CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
 
### OCSP stapling config
SSLUseStapling          on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache        shmcb:/var/run/ocsp(128000)

Guarde y cierre el archivo y salir de vim, el editor de texto.

Una nota acerca de los más seguros de opciones de SSL

Actualización arriba config de la siguiente manera para deshabilitar SSL y TLS versión 1/1.1. El siguiente es de propósito general de los servidores Apache con una variedad de clientes, se recomienda para casi todos los sistemas:

SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder     off
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Por favor, consulte esta página para obtener más información.

Paso 7 – Instalar certificado

Escriba el siguiente comando:

# acme.sh --installcert -d centos8.cyberciti.biz \
--keypath /etc/httpd/ssl/cyberciti.biz/centos8.cyberciti.biz.key \
--fullchainpath /etc/httpd/ssl/cyberciti.biz/centos8.cyberciti.biz.cer \
--reloadcmd 'systemctl reload httpd'
apache-vamos-a-cifrar-los-certificados-en-centos-8-7

Ahora nuestro Apache y se ejecuta con mod_ssl. Es el momento de abrir el puerto TCP # 443 (HTTPS) en CentOS server 8, de modo que los clientes pueden conectarse a ella. Actualización de las reglas de la siguiente manera:

$ sudo firewall-cmd --permanent --add-service=https --zone=public
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-services --zone=public

Compruebe que el puerto 443 y 80 abierto y listado de estado con la ayuda de ss comando junto con el comando grep/egrep comando:

$ sudo ss -tulpn
$ sudo ss -tulpn | egrep ':(80|443)'

Ejemplos de productos:

tcp    LISTEN   0        128                     *:443                 *:*       users:(("httpd",pid=12079,fd=9),("httpd",pid=12078,fd=9),("httpd",pid=12077,fd=9),("httpd",pid=10782,fd=9))
tcp    LISTEN   0        128                     *:80                  *:*       users:(("httpd",pid=12079,fd=4),("httpd",pid=12078,fd=4),("httpd",pid=12077,fd=4),("httpd",pid=10782,fd=4))

Paso 9 – Prueba

Hacer una página de prueba llamado index.html:
sudo vi /var/www/html/index.html
Añada el siguiente código html:

<html>
     <head>
    	<title>CentOS8 Apache test server - nixCraft</title>
     </head>
     <body>
	<h2>Hello, world!</h2>
	<p>
		I run on CentOS Linux 8. I act as a testbed for nixCraft test lab.
		I exist to help sysadmins and developers to help learn CentOS 8.
	</p>
	<hr>
	<small>Apache 2 server running on CentOS 8 with Let's Encrypt</small>
     </body>	
</html>

Guarde y cierre el archivo. El fuego de un navegador web y escriba su dominio, tales como:
https://centos8.cyberciti.biz

apache-vamos-a-cifrar-los-certificados-en-centos-8-8

Prueba con SSLlabs sitio de prueba:
https://www.ssllabs.com/ssltest/analyze.html?d=centos8.cyberciti.biz

apache-vamos-a-cifrar-los-certificados-en-centos-8-9

Paso 10 – acme.sh comandos

Lista de todos SSL/TLS certificados, ejecute:
# acme.sh --list
Renovar un certificado de dominio denominado server2.cyberciti.biz
# acme.sh --renew -d centos8.cyberciti.biz
Por favor, tenga en cuenta que un cron job vamos a tratar de hacer la renovación de un certificado para usted también. Este es instalado por defecto de la siguiente manera (no se requiere ninguna acción de su parte). Para ver la duración de los trabajos:
# crontab -l
Ejemplos de productos:

38 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

Actualización acme.sh cliente:
# acme.sh --update
Obtención de ayuda:
# acme.sh --help | more

Conclusión

Usted acaba de aprender cómo instalar un libre SSL/TSL certificado de Let’s Encrypt para la comunicación segura entre el servidor Apache y navegadores/clientes, en un CentOS Linux 8 servidor. Para más información ver Apache mod_ssl documentos aquí.

Puntuación media / 5. Recuento de votos:

¡Síguenos en redes sociales!

Entradas relaccionadas

3 Maneras fáciles de crear medios USB de arranque a partir de ISO en Ubuntu

Diego García Cuesta

Cómo instalar Kali Linux en VirtualBox | Tutorial definitivo

Diego García Cuesta

Cómo instalar VestaCP en Linux

Diego García Cuesta

Cómo instalar Grunt en Debian 9/8

Diego García Cuesta

Cómo realizar un backup manual de XFCE en Linux

Linux en Español

Instalar Arch GNU/Linux puro desde un live CD

Linux en Español