{"id":558,"date":"2019-02-27T12:11:21","date_gmt":"2019-02-27T11:11:21","guid":{"rendered":"https:\/\/tiraquelibras.com\/blog\/?p=558"},"modified":"2020-01-29T13:57:50","modified_gmt":"2020-01-29T12:57:50","slug":"lets-encrypt-con-apache-en-centos","status":"publish","type":"post","link":"https:\/\/blog.tiraquelibras.com\/?p=558","title":{"rendered":"Let&#8217;s Encrypt con Apache en Centos"},"content":{"rendered":"<p>En una entrada anterior explicamos como gestionar certificados de <strong>Let&#8217;s Encrypt<\/strong> con el servidor web <strong>Nginx<\/strong> en una <strong>Raspberry Pi 2B<\/strong> con <strong>Raspbian<\/strong>\u00a0(Debian Jessie 8.0) instalado. Tambi\u00e9n explicamos qu\u00e9 es y sus claves de \u00e9xito. Por este motivo no vamos a repetir esta informaci\u00f3n\u00a0y vamos a centrarnos en su instalaci\u00f3n y gesti\u00f3n en un servidor con <strong>Centos <\/strong>instalado.<\/p>\n<p>Esta entrada se basa en la versi\u00f3n <strong>6<\/strong> de <strong>Centos<\/strong>. Si quieres instalarlo en un <strong>Centos 7<\/strong>\u00a0dispones del paquete <em><strong>Certbot<\/strong><\/em>\u00a0en sus repositorios oficiales, pudiendo tomar como referencia de comandos lo mostrado en la entrada anterior sobre la instalaci\u00f3n de este en un sistema <strong>Debian<\/strong>. Sin embargo, tambi\u00e9n puedes usar los pasos que vamos a indicar en esta entrada.<\/p>\n<p>Os dejo el enlace a la entrada anterior relacionada con este mismo tema pinchando <a href=\"https:\/\/blog.tiraquelibras.com\/?p=535\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">aqu\u00ed<\/a>.<\/p>\n<hr \/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a0d3e70ec294\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a0d3e70ec294\"  aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Escenario\"  rel=\"nofollow\" target=\"_blank\">Escenario<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Requisitos\"  rel=\"nofollow\" target=\"_blank\">Requisitos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Instalacion_del_programa\"  rel=\"nofollow\" target=\"_blank\">Instalaci\u00f3n del programa<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Instalacion_de_paquetes_necesarios\"  rel=\"nofollow\" target=\"_blank\">Instalaci\u00f3n de paquetes necesarios<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Clonado_del_repositorio\"  rel=\"nofollow\" target=\"_blank\">Clonado del repositorio<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Instalacion_del_certificado\"  rel=\"nofollow\" target=\"_blank\">Instalaci\u00f3n del certificado<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Instalacion_integrada\"  rel=\"nofollow\" target=\"_blank\">Instalaci\u00f3n integrada<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Instalacion_manual\"  rel=\"nofollow\" target=\"_blank\">Instalaci\u00f3n manual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Archivos_VirtualHost\"  rel=\"nofollow\" target=\"_blank\">Archivos VirtualHost<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Actualizacion_de_los_certificados\"  rel=\"nofollow\" target=\"_blank\">Actualizaci\u00f3n de los certificados<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Dominio_concreto_%E2%80%93_manual\"  rel=\"nofollow\" target=\"_blank\">Dominio concreto &#8211; manual<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Renovar_y_mantener_archivos_existentes\"  rel=\"nofollow\" target=\"_blank\">Renovar y mantener archivos existentes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Renovar_y_sobreescribir_archivos_existentes\"  rel=\"nofollow\" target=\"_blank\">Renovar y sobreescribir archivos existentes<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Todos_los_dominios_%E2%80%93_manual_y_programado\"  rel=\"nofollow\" target=\"_blank\">Todos los dominios &#8211; manual y programado<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Manual\"  rel=\"nofollow\" target=\"_blank\">Manual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Programado\"  rel=\"nofollow\" target=\"_blank\">Programado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Actualizacion_sin_aplicar_cambios_%E2%80%93_test\"  rel=\"nofollow\" target=\"_blank\">Actualizaci\u00f3n sin aplicar cambios &#8211; test<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-18 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Revocar_un_certificado\"  rel=\"nofollow\" target=\"_blank\">Revocar un certificado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-19 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Eliminar_un_certificado\"  rel=\"nofollow\" target=\"_blank\">Eliminar un certificado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-20 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Tareas_de_limpieza\"  rel=\"nofollow\" target=\"_blank\">Tareas de limpieza<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Borrado_manual\"  rel=\"nofollow\" target=\"_blank\">Borrado manual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Borrado_programado\"  rel=\"nofollow\" target=\"_blank\">Borrado programado<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-23 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Comprobar_validez_del_certificado\"  rel=\"nofollow\" target=\"_blank\">Comprobar validez del certificado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-24 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Consideraciones_finales\"  rel=\"nofollow\" target=\"_blank\">Consideraciones finales<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-25 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\/#Enlaces_de_interes\"  rel=\"nofollow\" target=\"_blank\">Enlaces de inter\u00e9s<\/a><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"Escenario\"><\/span>Escenario<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Vamos a instalar el software necesario para gestionar certificados en un servidor con el sistema operativo <strong>Centos 6.10<\/strong> instalado.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CentOS release 6.10 (Final)\r\n<\/pre>\n<p>Para ello clonaremos el repositorio de <strong>Let&#8217;s Encrypt<\/strong> alojado en\u00a0<strong>GitHub<\/strong> para su ejecuci\u00f3n con sistemas <strong>Red Hat<\/strong>.<\/p>\n<p>El servidor web utilizado ser\u00e1 <strong>Apache<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Server version: Apache\/2.2.15 (Unix)\r\nServer built:   Jun 19 2018 15:45:13\r\n<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Requisitos\"><\/span>Requisitos<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Debemos de disponer de los siguientes elementos para poder gestionar estos certificados:<\/p>\n<ul>\n<li>Servidor web,<strong><em>\u00a0stand alone<\/em><\/strong>\u00a0o compartido (<em><strong>webroot<\/strong><\/em>).<\/li>\n<li>Dominio p\u00fablico, que debe de apuntar a la IP del servidor. En nuestro caso usaremos <span style=\"color: #ff0000;\"><strong>example.tiraquelibras.com<\/strong><\/span><\/li>\n<li>IP fija o un servicio DNS para direccionamiento din\u00e1mico, como DynDNS (pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/dyn.com\/dns\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>).<\/li>\n<li>Conexi\u00f3n al puerto 80 del servidor web desde el exterior.<\/li>\n<li>Conexi\u00f3n al puerto 443 para levantar el servicio una vez instalado el certificado.<\/li>\n<li><strong>NO<\/strong>\u00a0tener un certificado instalado previamente para el dominio que vamos a utilizar.<\/li>\n<\/ul>\n<p>El servidor web puede ser\u00a0<em><strong>stand alone<\/strong><\/em>\u00a0con un \u00fanico dominio, o compartido con distintos\u00a0<em><strong>Virtual Hosts<\/strong><\/em>\u00a0configurados.<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Instalacion_del_programa\"><\/span>Instalaci\u00f3n del programa<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Vamos a proceder con los pasos necesarios para su instalaci\u00f3n.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Instalacion_de_paquetes_necesarios\"><\/span>Instalaci\u00f3n de paquetes necesarios<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Instalamos el servidor web:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">yum install httpd<\/pre>\n<p>Y su m\u00f3dulo <em><strong>SSL\/TLS<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">yum -y install mod_ssl<\/pre>\n<p>Iniciamos el servicio web:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">service httpd start   # Para Centos 6\r\nsystemctl start httpd.service   # Para Centos 7<\/pre>\n<p>Ahora instalamos el paquete necesario para obtener <strong>Git<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">yum install epel-release<\/pre>\n<p>Instalamos <strong>Git<\/strong> junto a todas sus dependencias:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">yum install git<\/pre>\n<p><strong><span style=\"color: #ff0000;\">IMPORTANTE!!!<\/span><\/strong>, debemos de tener <strong>Python3<\/strong> instalado, ya que de\u00a0 lo contrario cualquier script configurado en el <strong>Crontab<\/strong> fallar\u00e1:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">yum install python34<\/pre>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Clonado_del_repositorio\"><\/span>Clonado del repositorio<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>En este punto procedemos a clonar el repositorio de <strong>GitHub<\/strong> en el directorio <em><strong>\/usr\/local<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">cd \/usr\/local\/\r\n\r\ngit clone https:\/\/github.com\/letsencrypt\/letsencrypt<\/pre>\n<p>Ya tenemos nuestro programa disponible para su ejecuci\u00f3n:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># cd \/usr\/local\/letsencrypt\/\r\n\r\n# ls\r\nacme                        certbot-dns-ovh          letshelp-certbot\r\nappveyor.yml                certbot-dns-rfc2136      LICENSE.txt\r\nAUTHORS.md                  certbot-dns-route53      linter_plugin.py\r\ncertbot                     certbot-dns-sakuracloud  local-oldest-requirements.txt\r\ncertbot-apache              certbot-nginx            MANIFEST.in\r\ncertbot-auto                certbot-postfix          mypy.ini\r\ncertbot-compatibility-test  CHANGELOG.md             pull_request_template.md\r\ncertbot-dns-cloudflare      CONTRIBUTING.md          pytest.ini\r\ncertbot-dns-cloudxns        docker-compose.yml       README.rst\r\ncertbot-dns-digitalocean    Dockerfile               readthedocs.org.requirements.txt\r\ncertbot-dns-dnsimple        Dockerfile-dev           setup.cfg\r\ncertbot-dns-dnsmadeeasy     Dockerfile-old           setup.py\r\ncertbot-dns-gehirn          docs                     tests\r\ncertbot-dns-google          examples                 tools\r\ncertbot-dns-linode          ISSUE_TEMPLATE.md        tox.cover.py\r\ncertbot-dns-luadns          letsencrypt-auto         tox.ini\r\ncertbot-dns-nsone           letsencrypt-auto-source\r\n<\/pre>\n<p><span style=\"color: #ff0000;\"><strong>OJO!!!<\/strong><\/span> Si ejecutamos la ayuda por primera vez acaba de instalar todas las dependencias que precisa, <span style=\"text-decoration: underline;\">que no cunda el p\u00e1nico<\/span>. En mi caso estas fueron las dependencias pendientes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">================================================================================================================\r\n Paquete                          Arquitectura          Versi\u00f3n                       Repositorio         Tama\u00f1o\r\n================================================================================================================\r\nInstalando:\r\n augeas-libs                      x86_64                1.0.0-10.el6                  base                314 k\r\n libffi-devel                     x86_64                3.0.5-3.2.el6                 base                 18 k\r\n python-tools                     x86_64                2.6.6-66.el6_8                base                871 k\r\n python-virtualenv                noarch                12.0.7-1.el6                  epel                1.7 M\r\nInstalando para las dependencias:\r\n tix                              x86_64                1:8.4.3-5.el6                 base                252 k\r\n tk                               x86_64                1:8.5.7-5.el6                 base                1.4 M\r\n tkinter                          x86_64                2.6.6-66.el6_8                base                258 k\r\n\r\nResumen de la transacci\u00f3n\r\n================================================================================================================\r\nInstalar       7 Paquete(s)\r\n\r\nTama\u00f1o total de la descarga: 4.8 M\r\nTama\u00f1o instalado: 11 M\r\n\u2026\r\n\u00a1Listo!\r\nCreating virtual environment...\r\nInstalling Python packages...\r\n\r\nInstallation succeeded.\r\n<\/pre>\n<p>Una vez completado el punto anterior obtenemos la ayuda del comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># cd \/usr\/local\/letsencrypt\r\n\r\n# .\/letsencrypt-auto --help\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n  letsencrypt-auto [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...\r\n\r\nCertbot can obtain and install HTTPS\/TLS\/SSL certificates.  By default,\r\nit will attempt to use a webserver both for obtaining and installing the\r\ncertificate. The most common SUBCOMMANDS and flags are:\r\n\r\nobtain, install, and renew certificates:\r\n    (default) run   Obtain &amp; install a certificate in your current webserver\r\n    certonly        Obtain or renew a certificate, but do not install it\r\n    renew           Renew all previously obtained certificates that are near\r\nexpiry\r\n    enhance         Add security enhancements to your existing configuration\r\n   -d DOMAINS       Comma-separated list of domains to obtain a certificate for\r\n\r\n  --apache          Use the Apache plugin for authentication &amp; installation\r\n  --standalone      Run a standalone webserver for authentication\r\n  --nginx           Use the Nginx plugin for authentication &amp; installation\r\n  --webroot         Place files in a server's webroot folder for authentication\r\n  --manual          Obtain certificates interactively, or using shell script\r\nhooks\r\n\r\n   -n               Run non-interactively\r\n  --test-cert       Obtain a test certificate from a staging server\r\n  --dry-run         Test \"renew\" or \"certonly\" without saving any certificates\r\nto disk\r\n\r\nmanage certificates:\r\n    certificates    Display information about certificates you have from Certbot\r\n    revoke          Revoke a certificate (supply --cert-path or --cert-name)\r\n    delete          Delete a certificate\r\n\r\nmanage your account with Let's Encrypt:\r\n    register        Create a Let's Encrypt ACME account\r\n    update_account  Update a Let's Encrypt ACME account\r\n  --agree-tos       Agree to the ACME server's Subscriber Agreement\r\n   -m EMAIL         Email address for important account notifications\r\n\r\nMore detailed help:\r\n\r\n  -h, --help [TOPIC]    print this message, or detailed help on a topic;\r\n                        the available TOPICS are:\r\n\r\n   all, automation, commands, paths, security, testing, or any of the\r\n   subcommands or plugins (certonly, renew, install, register, nginx,\r\n   apache, standalone, webroot, etc.)\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Instalacion_del_certificado\"><\/span>Instalaci\u00f3n del certificado<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Disponemos de dos m\u00e9todos de instalaci\u00f3n, la integrada (framework para Apache o Nginx) y la manual.<\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Instalacion_integrada\"><\/span>Instalaci\u00f3n integrada<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ahora podemos configurar el entorno para ser usado con el servidor web, en nuestro caso <strong>Apache<\/strong> aunque\u00a0\u00a0tambi\u00e9n disponible para otros como <strong>Nginx<\/strong>, o podemos usarlo tal cual se ha instalado. Esto es debido a que si lo configuramos para cualquiera de estos servidores web \u00e9l mismo se encarga de configurar las redirecciones\u00a0<em><strong>HTTP-&gt;HTTPS<\/strong><\/em>\u00a0de manera autom\u00e1tica, sin que tengamos que hacer nada.<\/p>\n<p>Ejecutamos el comando para generar el certificado de nuestro dominio <span style=\"color: #ff0000;\"><strong>example.tiraquelibras.com<\/strong><\/span>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">.\/letsencrypt-auto --apache  -d example.tiraquelibras.com\r\n<\/pre>\n<p>Nos pregunta si queremos que el <strong>Framework<\/strong> para <strong>Apache<\/strong>\u00a0haga la redirecci\u00f3n de manera autom\u00e1tica. Le indicamos que s\u00ed seleccionado la opci\u00f3n <em><strong>Redirect<\/strong><\/em>, opci\u00f3n 2:<\/p>\n<pre class=\"EnlighterJSRAW\">Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\nPlugins selected: Authenticator apache, Installer apache\r\nObtaining a new certificate\r\nCreated an SSL vhost at \/etc\/httpd\/conf.d\/example-le-ssl.conf\r\nDeploying Certificate to VirtualHost \/etc\/httpd\/conf.d\/example-le-ssl.conf\r\n\r\nPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n1: No redirect - Make no further changes to the webserver configuration.\r\n2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for\r\nnew sites, or if you're confident your site works on HTTPS. You can undo this\r\nchange by editing your web server's configuration.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nSelect the appropriate number [1-2] then [enter] (press 'c' to cancel): 2\r\n<\/pre>\n<p>Primero nos indica los archivos que ha modificado para configurar la redirecci\u00f3n, y si todo finaliz\u00f3 correctamente se muestra la URL de <strong>SSLLabs<\/strong> (<a href=\"https:\/\/www.ssllabs.com\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">https:\/\/www.ssllabs.com<\/a>) para confirmar la validez del certificado, junto con la fecha de expiraci\u00f3n dentro de <span style=\"text-decoration: underline;\"><strong>3 meses<\/strong><\/span>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Redirecting vhost in \/etc\/httpd\/conf.d\/example.conf to ssl vhost in \/etc\/httpd\/conf.d\/example-le-ssl.conf\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nCongratulations! You have successfully enabled https:\/\/example.tiraquelibras.com\r\n\r\nYou should test your configuration at:\r\nhttps:\/\/www.ssllabs.com\/ssltest\/analyze.html?d=example.tiraquelibras.com\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\nIMPORTANT NOTES:\r\n - Congratulations! Your certificate and chain have been saved at:\r\n   \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem\r\n   Your key file has been saved at:\r\n   \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/privkey.pem\r\n   Your cert will expire on 2019-05-27. To obtain a new or tweaked\r\n   version of this certificate in the future, simply run\r\n   letsencrypt-auto again with the \"certonly\" option. To\r\n   non-interactively renew *all* of your certificates, run\r\n   \"letsencrypt-auto renew\"\r\n - If you like Certbot, please consider supporting our work by:\r\n\r\n   Donating to ISRG \/ Let's Encrypt:   https:\/\/letsencrypt.org\/donate\r\n   Donating to EFF:                    https:\/\/eff.org\/donate-le\r\n\r\n<\/pre>\n<p>M\u00e1s adelante mostraremos el contenido de los archivos del <strong>VirtualHost<\/strong>, que en nuestro caso son\u00a0<em><strong>\/etc\/httpd\/conf.d\/example.conf<\/strong> <\/em>y <em><strong>\/etc\/httpd\/conf.d\/example-le-ssl.conf<\/strong><\/em>.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>OJO!!!<\/strong><\/span>, el archivo <em><strong>ssl.conf<\/strong> <\/em>generado contiene las etiquetas <em><strong>&lt;IfModule mod_ssl.c&gt;\u00a0&lt;\/IfModule&gt;<\/strong><\/em>, pero a mi no me funcion\u00f3 y por tanto las tuve que comentar.<\/p>\n<p>Comprobamos que el certificado ha sido instalado correctamente y su periodo de validez, junto con los archivos correspondientes a la semilla y certificado finales:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># .\/letsencrypt-auto certificates\r\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nFound the following certs:\r\n  Certificate Name: example.tiraquelibras.com\r\n    Domains: example.tiraquelibras.com\r\n    Expiry Date: 2019-05-27 14:22:52+00:00 (VALID: 89 days)\r\n    Certificate Path: \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem\r\n    Private Key Path: \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/privkey.pem\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Instalacion_manual\"><\/span>Instalaci\u00f3n manual<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para la instalaci\u00f3n manual podemos indicar que el servidor web es\u00a0<em><strong>stand alone<\/strong><\/em>, o lo que es lo mismo con un \u00fanico dominio configurado, o\u00a0<em><strong>compartido<\/strong><\/em>, con varios\u00a0<strong><em>Virtual Servers<\/em><\/strong>\u00a0configurados, que es nuestro caso. Vamos a iniciar la instalaci\u00f3n para el dominio <span style=\"color: #ff0000;\"><strong>example.tiraquelibras.com<\/strong><\/span><\/p>\n<p>Podemos ejecutar el comando anterior con el <strong>Framework<\/strong>\u00a0para <strong>Apache<\/strong>\u00a0escogiendo la opci\u00f3n 1 <em><strong>No redirect<\/strong><\/em>, el cual genera los archivos pero no configura el servidor web para redirigir el tr\u00e1fico al puerto seguro <strong>HTTP-&gt;HTTPS<\/strong>.<\/p>\n<p><strong>Stand alone<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">.\/letsencrypt-auto  --standalone -d yeloquehay.com<\/pre>\n<p><strong>Webroot (compartido)<\/strong>, que es nuestro caso. Tenemos que indicar el <em><strong>Document Root<\/strong><\/em>\u00a0en donde se encuentra alojada la web del dominio que vamos a indicar:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">.\/letsencrypt-auto certonly --webroot -w \/var\/www\/pruebas\/ -d example.tiraquelibras.com\r\n<\/pre>\n<p>Si todo finaliz\u00f3 correctamente se muestran los archivos generados junto a su path y a la fecha de expiraci\u00f3n de este:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\nPlugins selected: Authenticator webroot, Installer None\r\nObtaining a new certificate\r\n\r\nIMPORTANT NOTES:\r\n - Congratulations! Your certificate and chain have been saved at:\r\n   \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem\r\n   Your key file has been saved at:\r\n   \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/privkey.pem\r\n   Your cert will expire on 2019-05-27. To obtain a new or tweaked\r\n   version of this certificate in the future, simply run\r\n   letsencrypt-auto again. To non-interactively renew *all* of your\r\n   certificates, run \"letsencrypt-auto renew\"\r\n - If you like Certbot, please consider supporting our work by:\r\n\r\n   Donating to ISRG \/ Let's Encrypt:   https:\/\/letsencrypt.org\/donate\r\n   Donating to EFF:                    https:\/\/eff.org\/donate-le\r\n<\/pre>\n<p>Ahora podremos crear la redirecci\u00f3n\u00a0<strong>HTTP -&gt; HTTPS<\/strong>\u00a0indicando los archivos del certificado, teniendo en cuenta su fecha de expiraci\u00f3n:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Cert -&gt; \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem\r\n\r\nKey -&gt; \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/privkey.pem\r\n\r\nYour cert will expire on 2019-05-27<\/pre>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Archivos_VirtualHost\"><\/span>Archivos VirtualHost<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Archivo para el puerto 80\u00a0HTTP, con la redirecci\u00f3n al puerto seguro:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">&lt;VirtualHost *:80&gt;\r\n        ServerAdmin sbastian@telecable.com\r\n        DocumentRoot \/var\/www\/pruebas\/\r\n        ServerName example.tiraquelibras.com\r\n        ErrorLog \/var\/log\/httpd\/pruebas-error.log\r\n        CustomLog \/var\/log\/httpd\/pruebas.log combined\r\n        &lt;Directory \/var\/www\/pruebas\/&gt;\r\n             Order Deny,Allow\r\n             Allow from All\r\n        &lt;\/Directory&gt;\r\nRewriteEngine on\r\nRewriteCond %{SERVER_NAME} =example.tiraquelibras.com\r\nRewriteRule ^ https:\/\/%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent]\r\n&lt;\/VirtualHost&gt;\r\n<\/pre>\n<p>Archivo para el pureto 443 <strong>HTTPS<\/strong>, con los archivos del certificado generados anteriormente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">&lt;VirtualHost *:443&gt;\r\n        ServerAdmin sbastian@telecable.com\r\n        DocumentRoot \/var\/www\/pruebas\/\r\n        ServerName example.tiraquelibras.com\r\n        ErrorLog \/var\/log\/httpd\/pruebas-error.log\r\n        CustomLog \/var\/log\/httpd\/pruebas.log combined\r\n        &lt;Directory \/var\/www\/pruebas\/&gt;\r\n             Order Deny,Allow\r\n             Allow from All\r\n        &lt;\/Directory&gt;\r\n        SSLCertificateFile \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/cert.pem\r\n        SSLCertificateKeyFile \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/privkey.pem\r\n        Include \/etc\/letsencrypt\/options-ssl-apache.conf\r\n        SSLCertificateChainFile \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/chain.pem\r\n&lt;\/VirtualHost&gt;\r\n\r\n<\/pre>\n<p>Reiniciamos el servicio web:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">sudo service httpd restart\u00a0 \u00a0# Para Centos 6\r\nsudo systemctl restar httpd.service\u00a0 \u00a0# Para Centos 7<\/pre>\n<p>Revisar cualquier error que os pueda dar el reinicio, ya que alguno de los pasos previos no est\u00e1 bien ejecutado.<\/p>\n<p>Ahora el certificado que se muestra al acceder a la URL es el de\u00a0<em><strong>Let\u2019s Encrypt<\/strong><\/em>:<\/p>\n<p><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2019\/02\/LE-url.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-563 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2019\/02\/LE-url.jpg\" alt=\"\" width=\"209\" height=\"38\" \/><\/a><\/p>\n<p><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2019\/02\/LE-info.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-562 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2019\/02\/LE-info.jpg\" alt=\"\" width=\"423\" height=\"526\" \/><\/a><\/p>\n<p>Comprobamos el estado de los certificados instalados:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># .\/letsencrypt-auto certificates\r\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nFound the following certs:\r\n  Certificate Name: example.tiraquelibras.com\r\n    Domains: example.tiraquelibras.com\r\n    Expiry Date: 2019-05-27 14:39:17+00:00 (VALID: 89 days)\r\n    Certificate Path: \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem\r\n    Private Key Path: \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/privkey.pem\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n<\/pre>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Actualizacion_de_los_certificados\"><\/span><span style=\"font-size: 2.5rem;\">Actualizaci\u00f3n de los certificados<\/span><span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Podemos actualizar un certificado concreto o todos los instalados con Let&#8217;s Encrypt. Para ello usamos comandos distintos.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Dominio_concreto_%E2%80%93_manual\"><\/span>Dominio concreto &#8211; manual<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para actualizar el certificado de un dominio en concreto debemos indicar los siguientes datos:<\/p>\n<ul>\n<li>Tipo de instalaci\u00f3n:\n<ul>\n<li>Framework de Apache.<\/li>\n<li>Standalone.<\/li>\n<li>Webroot. Este ser\u00e1 nuestro caso.<\/li>\n<\/ul>\n<\/li>\n<li>El dominio dentro del listado de certificados instalados disponibles.<\/li>\n<li>Si el servidor web es\u00a0<em><strong>standalone<\/strong>\u00a0<\/em>o\u00a0<em><strong>webroot<\/strong><\/em>.<\/li>\n<li>Si mantenemos los archivos existentes o renovamos y sobrescribimos estos.<\/li>\n<li>Como nuestro caso es compartido debemos de indicar el nuevo\u00a0<em><strong>webroot<\/strong><\/em>, o path en donde se encuentra la aplicaci\u00f3n web instalada.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">[root@hunter letsencrypt]# .\/letsencrypt-auto certonly -d example.tiraquelibras.com\r\n\r\n\r\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\n\r\nHow would you like to authenticate with the ACME CA?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n1: Apache Web Server plugin (apache)\r\n2: Spin up a temporary webserver (standalone)\r\n3: Place files in webroot directory (webroot)\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nSelect the appropriate number [1-3] then [enter] (press 'c' to cancel): 3\r\nPlugins selected: Authenticator webroot, Installer None\r\nCert not yet due for renewal\r\n\r\nYou have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.\r\n(ref: \/etc\/letsencrypt\/renewal\/example.tiraquelibras.com.conf)\r\n\r\nWhat would you like to do?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n1: Keep the existing certificate for now\r\n2: Renew &amp; replace the cert (limit ~5 per 7 days)\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nSelect the appropriate number [1-2] then [enter] (press 'c' to cancel):<\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Renovar_y_mantener_archivos_existentes\"><\/span>Renovar y mantener archivos existentes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Escoger\u00edamos la opci\u00f3n 1,\u00a0<em><strong>Keep the existing certificate for now<\/strong><\/em>. Se generar\u00eda un nuevo directorio para los certificados obtenidos, manteniendo los existentes. Normalmente se nombra al nuevo directorio con el nombre del dominio acabado de una cadena de n\u00fameros, por ejemplo <strong>example.tiraquelibras.com-0001<\/strong>.<\/p>\n<p>Podremos escoger qu\u00e9 archivos vamos a utilizar en el <strong>VirtualHost<\/strong>.<\/p>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Renovar_y_sobreescribir_archivos_existentes\"><\/span>Renovar y sobreescribir archivos existentes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Escoger\u00edamos la opci\u00f3n 2,\u00a0<em><strong>Renew &amp; replace the cert<\/strong><\/em><em>.\u00a0<\/em>No se genera un directorio nuevo, sino que se actualizan en el directorio actual.<\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Todos_los_dominios_%E2%80%93_manual_y_programado\"><\/span>Todos los dominios &#8211; manual y programado<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Otra forma de actualizar los certificados es dejando que el mismo programa decida que tiene que actualizar y que no, dependiendo de su fecha de caducidad.<\/p>\n<p>Si se encuentra entre los 7 ~ 5 d\u00edas previos a su fecha de caducidad este pasar\u00e1 a estado\u00a0<em>disponible de renovar<\/em>. De lo contrario no har\u00e1 nada.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Manual\"><\/span>Manual<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>El comando que usaremos para renovar todos los certificados es el siguiente:<\/p>\n<div class=\"EnlighterJSWrapper enlighterEnlighterJSWrapper\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># .\/letsencrypt-auto renew\r\n<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Programado\"><\/span>Programado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Podemos automatizar la renovaci\u00f3n de los certificados instalados con Let\u2019s Encrypt en el servidor programando una tarea del\u00a0<em><strong>crontab<\/strong>\u00a0<\/em>en el propio sistema.<\/p>\n<p>Ejecuci\u00f3n diaria a las 2:30 am, desde el usuario\u00a0<strong>root<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ crontab -e\r\n30 2 * * * \/usr\/local\/letsencrypt\/letsencrypt-auto\u00a0renew\u00a0&amp;&amp; \/sbin\/service\u00a0httpd\u00a0reload<\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Actualizacion_sin_aplicar_cambios_%E2%80%93_test\"><\/span>Actualizaci\u00f3n sin aplicar cambios &#8211; test<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Tambi\u00e9n podemos comprobar el resultado de ejecutar una renovaci\u00f3n de todos los certificados sin generar ni aplicar archivo alguno. De esta manera podemos identificar problemas a la hora de ejecutar la renovaci\u00f3n de manera controlada. Para ello usaremos la opci\u00f3n <em><strong>&#8211;dry-run<\/strong><\/em>.<\/p>\n<p>En nuestro caso debemos de indicar el <em><strong>Document Root<\/strong> <\/em>del certificado, al estar en modo <strong>Webroot<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># \/usr\/local\/letsencrypt\/letsencrypt-auto renew --webroot -w \/var\/www\/pruebas --dry-run\r\n\r\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nProcessing \/etc\/letsencrypt\/renewal\/example.tiraquelibras.com.conf\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nCert not due for renewal, but simulating renewal for dry run\r\nPlugins selected: Authenticator webroot, Installer None\r\nRenewing an existing certificate\r\nPerforming the following challenges:\r\nhttp-01 challenge for example.tiraquelibras.com\r\nUsing the webroot path \/var\/www\/pruebas for all unmatched domains.\r\nWaiting for verification...\r\nCleaning up challenges\r\nDry run: skipping deploy hook command: service httpd reload\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nnew certificate deployed without reload, fullchain is\r\n\/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n** DRY RUN: simulating 'certbot renew' close to cert expiry\r\n**          (The test certificates below have not been saved.)\r\n\r\nCongratulations, all renewals succeeded. The following certs have been renewed:\r\n  \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem (success)\r\n** DRY RUN: simulating 'certbot renew' close to cert expiry\r\n**          (The test certificates above have not been saved.)\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n<\/pre>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Revocar_un_certificado\"><\/span>Revocar un certificado<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Al revocar un certificado\u00a0<em><strong>Let\u2019s Encrypt<\/strong><\/em>\u00a0lo publicar\u00e1 a trav\u00e9s del\u00a0<strong>OCSP<\/strong>\u00a0(<em><strong>Online Certificate Status Protocol<\/strong><\/em>), el cual es consultado por algunos navegadores para identificar si el certificado es de confianza o no. Esto puede darse cuando por error compartimos las claves privadas de manera\u00a0 p\u00fablica, por ejemplo. Documentaci\u00f3n oficial pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/letsencrypt.org\/docs\/revoking\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Con este comando podemos aprovechar a eliminarlo tambi\u00e9n, como veremos a continuaci\u00f3n.<\/p>\n<p>Recuerda indicar el <em><strong>path<\/strong> <\/em>de tu certificado:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">\/usr\/local\/letsencrypt\/letsencrypt-auto revoce --cert-path \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem<\/pre>\n<p>Confirmamos el certificado a revocar, nos pregunta si queremos eliminarlo o solo revocarlo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nWould you like to delete the cert(s) you just revoked, along with all earlier\r\nand later versions of the cert?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(Y)es (recommended)\/(N)o: y\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nDeleted all files relating to certificate example.tiraquelibras.com.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nCongratulations! You have successfully revoked the certificate that was located\r\nat \/etc\/letsencrypt\/live\/example.tiraquelibras.com\/fullchain.pem\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n<\/pre>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Eliminar_un_certificado\"><\/span>Eliminar un certificado<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Para eliminar un certificado de los cargados en nuestro servidor con Certbot ejecutamos el siguiente comando, indicando del listado cual queremos borrar.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">\/usr\/local\/letsencrypt\/letsencrypt-auto delete<\/pre>\n<p>Nos pregunta qu\u00e9 certificado queremos borrar, lo seleccionamos y quedar\u00eda eliminado:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\n\r\nWhich certificate(s) would you like to delete?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n1: example.tiraquelibras.com\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nSelect the appropriate numbers separated by commas and\/or spaces, or leave input\r\nblank to select all options shown (Enter 'c' to cancel): 1\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nDeleted all files relating to certificate example.tiraquelibras.com.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n<\/pre>\n<p>Quedar\u00eda eliminado:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># \/usr\/local\/letsencrypt\/letsencrypt-auto certificates\r\n\r\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nNo certs found.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n<\/pre>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Tareas_de_limpieza\"><\/span>Tareas de limpieza<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Cuando generamos un certificado o renovamos uno existente se generan ciertos archivos necesarios para obtener el certificado final. Estos son los archivos\u00a0<em><strong>.csr<\/strong>\u00a0<\/em>y\u00a0<em><strong>.key<\/strong><\/em>, los cuales se almacenan en los directorios\u00a0<em><strong>\/etc\/letsencrypt\/csr\/<\/strong><\/em>\u00a0y\u00a0<em><strong>\/etc\/letsencrypt\/keys\/<\/strong><\/em>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ ls \/etc\/letsencrypt\/csr\/\r\n0000_csr-certbot.pem  0004_csr-certbot.pem  0008_csr-certbot.pem  0012_csr-certbot.pem  0016_csr-certbot.pem\r\n0001_csr-certbot.pem  0005_csr-certbot.pem  0009_csr-certbot.pem  0013_csr-certbot.pem\r\n0002_csr-certbot.pem  0006_csr-certbot.pem  0010_csr-certbot.pem  0014_csr-certbot.pem\r\n0003_csr-certbot.pem  0007_csr-certbot.pem  0011_csr-certbot.pem  0015_csr-certbot.pem\r\n\r\n$ ls \/etc\/letsencrypt\/keys\/\r\n0000_key-certbot.pem  0004_key-certbot.pem  0008_key-certbot.pem  0012_key-certbot.pem  0016_key-certbot.pem\r\n0001_key-certbot.pem  0005_key-certbot.pem  0009_key-certbot.pem  0013_key-certbot.pem\r\n0002_key-certbot.pem  0006_key-certbot.pem  0010_key-certbot.pem  0014_key-certbot.pem\r\n0003_key-certbot.pem  0007_key-certbot.pem  0011_key-certbot.pem  0015_key-certbot.pem<\/pre>\n<p>Es buena pr\u00e1ctica borrarlos cada cierto tiempo.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Borrado_manual\"><\/span>Borrado manual<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Los podemos borrar a mano.<\/p>\n<div class=\"EnlighterJSWrapper enlighterEnlighterJSWrapper\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">rm -rf \/etc\/letsencrypt\/csr\/*\r\nrm -rf \/etc\/letsencrypt\/keys\/*\r\n\r\nservice httpd reload<\/pre>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Borrado_programado\"><\/span>Borrado programado<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>O desde el\u00a0<em><strong>crontab\u00a0<\/strong><\/em>del usuario\u00a0<em><strong>root<\/strong><\/em>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">30 3 * * * \/bin\/rm -rf \/etc\/letsencrypt\/csr\/* &amp;&amp; \/bin\/rm -rf \/etc\/letsencrypt\/keys\/*<\/pre>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Comprobar_validez_del_certificado\"><\/span><span style=\"color: #000000; font-family: Poppins, sans-serif; font-size: 2.5rem;\">Comprobar validez del certificado<\/span><span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Una vez instalado el certificado podemos comprobar su validez con alguna herramienta online, como el test de\u00a0<em><strong>Qualys<\/strong><\/em>\u00a0desde la URL\u00a0<a class=\"external external_icon\" href=\"https:\/\/www.ssllabs.com\/ssltest\/analyze.html\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">https:\/\/www.ssllabs.com\/ssltest\/analyze.html<\/a><\/p>\n<p>Esto lleva un tiempo hasta finalizar todos los chequeos.<\/p>\n<p><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2019\/02\/le-check.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-565 size-large\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2019\/02\/le-check-1024x593.jpg\" alt=\"\" width=\"1024\" height=\"593\" \/><\/a><\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Consideraciones_finales\"><\/span>Consideraciones finales<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Es importante mantener los certificados SSL\/TLS configurados y permanentemente actualizados, colaborando a crear y mantener un Internet cada vez m\u00e1s seguro, pero que no nos suponga un esfuerzo econ\u00f3mico grande. Para ello contamos con esta fabulosa plataforma sin \u00e1nimo de lucro, la cual est\u00e1 siendo muy bien acogida tanto por corporaciones como usuarios.<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Enlaces_de_interes\"><\/span>Enlaces de inter\u00e9s<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Enlaces consultados, pincha <a href=\"https:\/\/www.interserver.net\/tips\/kb\/install-lets-encrypt-ssl-certificate-centos-67\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">aqu\u00ed<\/a>.<\/p>\n<p>Let\u2019s Encrypt oficial, pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/letsencrypt.org\/es\/about\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Let\u2019s Encrypt Wikipedia, pincha\u00a0<a href=\"https:\/\/es.wikipedia.org\/wiki\/Let's_encrypt\" target=\"_blank\" rel=\"noopener noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Internet Security Research Group oficial, pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/www.abetterinternet.org\/about\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Namecheap certificados oficial, pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/www.namecheap.com\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Qualys test online, pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/www.ssllabs.com\/ssltest\/analyze.html\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Noticia Google y p\u00e1ginas HTTP, pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/blog.interdominios.com\/google-chrome-califica-ya-como-no-seguras-las-webs-sin-protocolo-https\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>DynDNS oficial, pincha\u00a0<a class=\"external external_icon\" href=\"https:\/\/dyn.com\/dns\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqu\u00ed<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En una entrada anterior explicamos como gestionar certificados de Let&#8217;s Encrypt con el servidor web Nginx en una Raspberry Pi 2B con Raspbian\u00a0(Debian Jessie 8.0)<span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/blog.tiraquelibras.com\/?p=558\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":559,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,10,22],"tags":[48,49,23,43,42,44],"class_list":["post-558","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ciberseguridad","category-sistemas","category-ti","tag-apache","tag-centos","tag-certificados","tag-cifrado","tag-tls","tag-web"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=558"}],"version-history":[{"count":0,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/558\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/media\/559"}],"wp:attachment":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}