Anteriormente, ya estuvimos hablando de las posibilidades de tener SSL gratis con un  auto certificado, con una entidad que te lo facilita gratis, y recientemente utilizando Let’s Encrypt ; un proyecto de código abierto, y gratuito , aunque lo instalamos en Centos 6, con Virtualmin. Ahora vamos a instalarlo en una maquina Centos 6, pero con cPanel.

La instalación la he realizado siguiendo la guia que facilita una persona de cPanel en :

https://forums.cpanel.net/threads/how-to-installing-ssl-from-lets-encrypt.513621/

y que viene a ser lo siguiente.

Instalar repositorios «epel» para Centos 6

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

Instalamos los repositorios de «IusCommunity»

rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm

Instalamos git y python27 desde «IUS»

 yum -y install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv --enablerepo=ius

Ahora ya podemos descargarnos letsencrypt desde los repositorios de git, por ejemplo, en root

cd /root
git clone https://github.com/letsencrypt/letsencrypt
cd /root/letsencrypt
./letsencrypt-auto --verbose

Ospodeis encontrar conun mensaje del tipo:

No installers are available on your OS yet; try running "letsencrypt-auto certon ly" to get a cert you can install manually

Pero… no os preocupeis. Nosotros vamos a instalar nuestro primer certificado. para ello escribimos:

./letsencrypt-auto --text --agree-tos 
                 --email correo@electronico.com 
                 certonly 
                 --renew-by-default 
                 --webroot 
                 --webroot-path /home/usuarioCPanel/public_html/ 
                 -d miDominio.com -d www.miDominio.com -d mail.miDominio.com -d ftp.miDominio.com

El script comprobara que puede escribir en la ruta indicada en «webroot-path» que ademas es el directorio raiz del dominio; comprobara que el dominio que le indicas es accesible desde internet, y si todo va bien, instalara los certificados

Cuando necesites añadir mas certificados, lo puedes hacer ya desde tu ruta:

cd /root/.local/share/letsencrypt/bin/
./letsencrypt --text certonly --renew-by-default --webroot 
              --webroot-path /home/otroUsuarioCpanel/public_html/
              -d miOtroDominio.com -d www.miOtroDominio.com

En donde ya no indicas la direccion de correo electrónico.

La actualización

Los certificados que obtenemos, caducan a los 90 dias, por lo que, para no tenernos que preocupar, deberemos añadir una tarea al cron, para que cada 60 dias, por ejemplo, nos renueve los certificados. Para eso, prepararemos un script que nos actualice los certificados en cPanel, utilizando la API y que podemos llamar:

/root/installssl.pl

y contiene:

#!/usr/local/cpanel/3rdparty/bin/perl

use strict;
use LWP::UserAgent;
use LWP::Protocol::https;
use MIME::Base64;
use IO::Socket::SSL;
use URI::Escape;

my $user = "root";
my $pass = "rootpass";

my $auth = "Basic " . MIME::Base64::encode( $user . ":" . $pass );

my $ua = LWP::UserAgent->new(
    ssl_opts   => { verify_hostname => 0, SSL_verify_mode => 'SSL_VERIFY_NONE', SSL_use_cert => 0 },
);

my $dom = $ARGV[0];

my $certfile = "/etc/letsencrypt/live/$dom/cert.pem";
my $keyfile = "/etc/letsencrypt/live/$dom/privkey.pem";
my $cafile =  "/etc/letsencrypt/live/bundle.txt";

my $certdata;
my $keydata;
my $cadata;

open(my $certfh, '<', $certfile) or die "cannot open file $certfile";
    {
        local $/;
        $certdata = <$certfh>;
    }
    close($certfh);

open(my $keyfh, '<', $keyfile) or die "cannot open file $keyfile";
    {
        local $/;
        $keydata = <$keyfh>;
    }
    close($keyfh);

open(my $cafh, '<', $cafile) or die "cannot open file $cafile";
    {
        local $/;
        $cadata = <$cafh>;
    }
    close($cafh);

my $cert = uri_escape($certdata);
my $key = uri_escape($keydata);
my $ca = uri_escape($cadata);

my $request = HTTP::Request->new( POST => "https://127.0.0.1:2087/json-api/installssl?api.version=1&domain=$dom&crt=$cert&key=$key&cab=$ca" );
$request->header( Authorization => $auth );
my $response = $ua->request($request);
print $response->content;

Crearemos tambien el fichero:

/etc/letsencrypt/live/bundle.txt

Con el siguiente contenido

-----BEGIN CERTIFICATE-----
MIIEqDCCA5CgAwIBAgIRAJgT9HUT5XULQ+dDHpceRL0wDQYJKoZIhvcNAQELBQAw
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzAeFw0xNTEwMTkyMjMzMzZaFw0yMDEwMTkyMjMzMzZa
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAJzTDPBa5S5Ht3JdN4OzaGMw6tc1Jhkl4b2+NfFwki+3uEtB
BaupnjUIWOyxKsRohwuj43Xk5vOnYnG6eYFgH9eRmp/z0HhncchpDpWRz/7mmelg
PEjMfspNdxIknUcbWuu57B43ABycrHunBerOSuu9QeU2mLnL/W08lmjfIypCkAyG
dGfIf6WauFJhFBM/ZemCh8vb+g5W9oaJ84U/l4avsNwa72sNlRZ9xCugZbKZBDZ1
gGusSvMbkEl4L6KWTyogJSkExnTA0DHNjzE4lRa6qDO4Q/GxH8Mwf6J5MRM9LTb4
4/zyM2q5OTHFr8SNDR1kFjOq+oQpttQLwNh9w5MCAwEAAaOCAZIwggGOMBIGA1Ud
EwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMH8GCCsGAQUFBwEBBHMwcTAy
BggrBgEFBQcwAYYmaHR0cDovL2lzcmcudHJ1c3RpZC5vY3NwLmlkZW50cnVzdC5j
b20wOwYIKwYBBQUHMAKGL2h0dHA6Ly9hcHBzLmlkZW50cnVzdC5jb20vcm9vdHMv
ZHN0cm9vdGNheDMucDdjMB8GA1UdIwQYMBaAFMSnsaR7LHH62+FLkHX/xBVghYkQ
MFQGA1UdIARNMEswCAYGZ4EMAQIBMD8GCysGAQQBgt8TAQEBMDAwLgYIKwYBBQUH
AgEWImh0dHA6Ly9jcHMucm9vdC14MS5sZXRzZW5jcnlwdC5vcmcwPAYDVR0fBDUw
MzAxoC+gLYYraHR0cDovL2NybC5pZGVudHJ1c3QuY29tL0RTVFJPT1RDQVgzQ1JM
LmNybDATBgNVHR4EDDAKoQgwBoIELm1pbDAdBgNVHQ4EFgQUqEpqYwR93brm0Tm3
pkVl7/Oo7KEwDQYJKoZIhvcNAQELBQADggEBANHIIkus7+MJiZZQsY14cCoBG1hd
v0J20/FyWo5ppnfjL78S2k4s2GLRJ7iD9ZDKErndvbNFGcsW+9kKK/TnY21hp4Dd
ITv8S9ZYQ7oaoqs7HwhEMY9sibED4aXw09xrJZTC9zK1uIfW6t5dHQjuOWv+HHoW
ZnupyxpsEUlEaFb+/SCI4KCSBdAsYxAcsHYI5xxEI4LutHp6s3OT2FuO90WfdsIk
6q78OMSdn875bNjdBYAqxUp2/LEIHfDBkLoQz0hFJmwAbYahqKaLn73PAAm1X2kj
f1w8DdnkabOLGeOVcj9LQ+s67vBykx4anTjURkbqZslUEUsn2k5xeua2zUk=
-----END CERTIFICATE-----

y añadiremos al cron:

0 0 */60 * * /root/.local/share/letsencrypt/bin/letsencrypt --text certonly --renew-by-default --webroot
                  --webroot-path /home/cPanelUser/public_html/ -d domain.com -d www.domain.com; /root/installssl.pl domain.com

para todos los dominios que deseemos

 

Nota:

Posteriormente,he encontrado tres articulos que que son muy interesantes; cuando tenga un momento, los instalaré en una máquina para probarlos y os lo comentare; mientras tanto,si alquien quiere verlos estan aqui:

  • https://tfmm.co/lets-encrypt-on-cpanel-automated/
  • https://bitbucket.org/webstandardcss/lets-encrypt-for-cpanel-centos-6.x
  • https://github.com/mfgering/letsencrypt-lw

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.