Generar e instalar un certificado gratuitamente con let’s encrypt en centos y whm

Generar e instalar un certificado gratuitamente con let’s encrypt en centos y whm

Los certificados para las páginas web son hoy en día una necesidad básica y no un lujo para los sitios de compras o que generen dinero de alguna maner

Corregir el problema de no tener audio en Linux dentro de una máquina virtual
Instalar y configurar Apache y PHP en Fedora
Elegir una llave privada para comunicar git con el repositorio
Resolver el error al entrar a cPanel teniendo cloudLinux
Servidor apache para desarrollar PHP

Los certificados para las páginas web son hoy en día una necesidad básica y no un lujo para los sitios de compras o que generen dinero de alguna manera, ya que poco a poco se está tratando de convertir en un estandar el https por su mejora en seguridad.

El por qué no avanzaba más rápido es por el costo del certificado, ya que muchas autoridades certificadoras emtien los certificados con costos muy elevados para el usuario común, o el emprendedor que no cuenta con fondos para tal “lujo”.

Todo ello acabó con let’s encrypt, que emite los certificados para tus dominios de manera gratuita y sólo queda el problema técnico de generarlos e instalarlos. Tienen una duración de tres meses, pero sin costo de renovación.

En éste tutorial se utiliza la herramienta acme para generar los certifiados, corriendo en CentOS 5 y 6; aunque los autores de acme lo probaron en:

  • Ubuntu
  • Debian
  • CentOS
  • Windows
  • FreeBSD
  • pfsense
  • openSUSE
  • Alpine Linux
  • Archlinux
  • Fedora
  • Kali Linux
  • Oracle Linux
  • Proxmox
  • openBSD
  • Mageia
  • SunOS / Solaris

Vamos a empezar.

En nuestra terminal, nos dirigimos a una carpeta donde queramos instalar acme, en éste ejemplo es /root

cd root

Creamos la carpeta acme y entramos en ella

mkdir acme
cd acme

Descargamos e instalamos acme

curl https://get.acme.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   671  100   671    0     0   1396      0 --:--:-- --:--:-- --:--:--     0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 89667  100 89667    0     0  2332k      0 --:--:-- --:--:-- --:--:-- 5352k
[mar sep 13 21:22:31 CDT 2016] Installing from online archive.
[mar sep 13 21:22:31 CDT 2016] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz
[mar sep 13 21:22:31 CDT 2016] Extracting master.tar.gz
[mar sep 13 21:22:32 CDT 2016] Installing to /root/.acme.sh
[mar sep 13 21:22:32 CDT 2016] Installed to /root/.acme.sh/acme.sh
[mar sep 13 21:22:32 CDT 2016] OK, Close and reopen your terminal to start using acme.sh
[mar sep 13 21:22:32 CDT 2016] Installing cron job
0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
[mar sep 13 21:22:32 CDT 2016] Good, bash is installed, change the shebang to use bash as prefered.
[mar sep 13 21:22:32 CDT 2016] OK
[mar sep 13 21:22:32 CDT 2016] Install success!

Ahora generamos los certificados de los dominios que necesitemos.
Ejecutamos .acme.sh indicando que generaremos el certificado colcoando todos los dominios / subdominios que necesitemos con el parámetro -d, e indicando la ruta en dónde se encuentra la raíz web con el parámetro -w, para que pueda verificar que tales dominios nos pertenecen (de lo contrario cualquiera podría generar certificados válidos para cualquier dominio)

En éste ejemplo se harán certificados para éste dominio angelinux-slack y algunos subdominios

/root/.acme.sh/acme.sh --issue -d blog.angelinux-slack.net -w /home/angelinu/public_html/blog
[mar sep 13 21:36:33 CDT 2016] Creating account key
[mar sep 13 21:36:34 CDT 2016] Registering account
[mar sep 13 21:36:35 CDT 2016] Registered
[mar sep 13 21:36:36 CDT 2016] Creating domain key
[mar sep 13 21:36:37 CDT 2016] Single domain='blog.angelinux-slack.net'
[mar sep 13 21:36:37 CDT 2016] Verify each domain
[mar sep 13 21:36:37 CDT 2016] Getting webroot for domain='blog.angelinux-slack.net'
[mar sep 13 21:36:37 CDT 2016] Getting token for domain='blog.angelinux-slack.net'
[mar sep 13 21:36:37 CDT 2016] Verifying:blog.angelinux-slack.net
[mar sep 13 21:36:43 CDT 2016] Success
[mar sep 13 21:36:43 CDT 2016] Verify finished, start to sign.
[mar sep 13 21:36:44 CDT 2016] Cert success.

Seguido les muestra el certificado generado para su dominio, así como la lista de las ubicaciones en donde se generarondicho certificado, la clave privada, así como el certificado del intermediario.

Ahora debemos entrar vía WHM y dirigirnos a “instalar un certificado en un dominio”

snapshot1

Colocamos el dominio o subdominio al que vamos a instalar el certificado.

snapshot2

Seguido, colocamos el certificado que nos mostró en pantalla, empezando por —–BEGIN CERTIFICATE—– y terminando en —–END CERTIFICATE—–

snapshot3

Para la clave privada, debemos leer uno de los archivos que nos generó acme, y que nos mostró al final de la ejecución. Es el que tiene la leyenda

[mar sep 13 21:36:44 CDT 2016] Your cert key is in (la ruta)

Para poder verlo ejecutamos cat

cat /ruta/del/certificado.key

Copiamos y pegamos el contenido del archivo en WHM donde pide la clave privada.

Y para Certificate Authority Bundle, podemos regresarnos un poco más arriba donde pide “Certificado” y a la derecha tiene un botón con la leyenda “Autorrellenar según certificado”.

Con ello tendrremos un signo verde en los tres elementos indicando que todo está bien y sólo nos queda presionar el bot´on “Instalar”

snapshot4

Ahora nos dirigimos a nuestro sitio anteponiendo https para poder verificar

¡Y listo!

 

COMMENTS

WORDPRESS: 2
  • comment-avatar
    Javier 1 semana

    no tengo WHM por linea de comando en un slackware 14.2 como lo hago?
    Aclaro que tengo todo funcionando correctamente incluso probe con un certificado autogenerado y todo esta correcto, pero no logro dar en la tecla con este cerfificado, en donde lo indique (vhost o host) fallla….. alguna sugerencia?

  • comment-avatar
    Javier 7 días

    Ya encontre como hacerlo indico a continuacion por si alguien lo necesita

    editar httpd-ssl.conf

    indicar lo siguiente
    SSLCertificateFile “/directorio_donde_se_encuentra_el_archivo/dominio_regitrado.cer”
    SSLCertificateKeyFile “/directorio_donde_se_encuentra_el_archivo/dominio_regitrado.key”
    SSLCertificateChainFile “/directorio_donde_se_encuentra_el_archivo/fullchain.cer”
    SSLCertificatePath “/directorio_donde_se_encuentra_el_archivo”
    SSLCertificateFile “/directorio_donde_se_encuentra_el_archivo/ca.cer”

    reiniciar el servicio httpd (/etc/rc.d/rc.httpd restart)

    Si administra host virtuales debera indicar tambien en el arhivo de virtuales (httpd-vhost.conf) para el puerto 443

    SSLCertificateFile “/directorio_donde_se_encuentra_el_archivo/dominio_regitrado.cer”
    SSLCertificateKeyFile “/directorio_donde_se_encuentra_el_archivo/dominio_regitrado.key”