{"id":2346,"date":"2017-06-22T16:43:28","date_gmt":"2017-06-22T16:43:28","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=2346"},"modified":"2017-06-25T16:12:49","modified_gmt":"2017-06-25T16:12:49","slug":"normalizando-el-uso-de-certbot","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2017\/06\/22\/normalizando-el-uso-de-certbot\/","title":{"rendered":"Normalizando el uso de certbot &#8230;"},"content":{"rendered":"<p>&#8230; porque \u00e9sto empieza a parecer un <em>sindi\u00f3s<\/em> y as\u00ed no se puede.<\/p>\n<p><!--more--><\/p>\n<p>[toc]<\/p>\n<h3>Objetivos<\/h3>\n<ol>\n<li>Usar el programa <em>certbot<\/em> ya que est\u00e1 empaquetado para Debian.\n<ol>\n<li>Definir un archivo de configuraci\u00f3n.<\/li>\n<\/ol>\n<\/li>\n<li>Organizar los certificados en un sitio determinado:\n<ol>\n<li>Elegir un directorio para los certificados.<\/li>\n<li>Determinar qui\u00e9nes pueden acceder a ellos.<\/li>\n<\/ol>\n<\/li>\n<li>Instalar un script que:\n<ol>\n<li>Verifique los permisos de acceso.<\/li>\n<li>Reinicie servicios para que tengan en cuenta los cambios.<\/li>\n<li>Registre dichos cambios en la configuraci\u00f3n si es necesario..<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h4>Usar el programa <em>certbot<\/em><\/h4>\n<p>En la versi\u00f3n <em>Jessie<\/em> de Debian el programa se encuentra en el repositorio <em>backports<\/em>. En la nueva versi\u00f3n estable ya est\u00e1 en los respositorios normales.<\/p>\n<p>En ambos casos su instalaci\u00f3n arrastra un buen mont\u00f3n de paquetes Python pero no realiza cambios dr\u00e1sticos en el sistema.<\/p>\n<h5>Definir un archivo de configuraci\u00f3n<\/h5>\n<p>El programa <em>certbot<\/em> puede emplear un archivo en formato <em>.ini<\/em> con el par\u00e1metro <code>-c archivo<\/code> o <code>--config archivo<\/code>, aunque tambi\u00e9n intenta localizarlo en los siguientes sitios:<\/p>\n<ol>\n<li><code>\/etc\/letsencrypt\/cli.ini<\/code><\/li>\n<li><code>~\/.config\/letsencrypt\/cli.ini<\/code>.<\/li>\n<\/ol>\n<p>He guardado una plantilla con una configuraci\u00f3n m\u00ednima, tambi\u00e9n para el servidor web Apache, en mi <a href=\"https:\/\/astillas.net\/wiki\/Modelos#certbot\">wiki<\/a>.<\/p>\n<h4>Organizar los certificados<\/h4>\n<p>La organizaci\u00f3n viene dada por el propio programa. Todo lo guarda bajo el directorio <code>\/etc\/letsencryt\u00a0<\/code>de la siguiente forma:<\/p>\n<pre class=\"lang:default decode:true \">\/etc\/letsencrypt# ls -1l\r\ntotal 32\r\ndrwx------ 4 root root 4096 ene 13 11:40 accounts\r\ndrwxr-x--- 3 root ssl-cert 4096 ene 16 19:40 archive\r\n-rw-r--r-- 1 root root 767 abr 5 11:38 certbot.log\r\n-rw-r--r-- 1 root root 354 ene 13 11:32 cli.ini\r\ndrwxr-xr-x 2 root root 4096 abr 7 12:22 csr\r\ndrwx------ 2 root root 4096 abr 7 12:22 keys\r\ndrwxr-x--- 3 root ssl-cert 4096 ene 16 19:40 live\r\ndrwxr-xr-x 2 root root 4096 abr 7 12:22 renewal\r\n\r\n\r\n<\/pre>\n<p>y s\u00f3lo tenemos que permitir el acceso a trav\u00e9s de los mecanismos habituales del sistema. Para ello usamos el grupo <code>ssl-cert<\/code>en los archivos que contienen certificados y claves y le asignamos las cuentas de usuario de los servicios que lo necesiten.<\/p>\n<p>La mayor parte de esos programas funcionan como <code>root <\/code>por lo que s\u00f3lo tendremos que aplicarlo en algunos casos muy espec\u00edficos: el servidor <code>prosody<\/code>\u00a0<code><\/code>y poco m\u00e1s.<\/p>\n<h4>Script para completar el proceso de renovaci\u00f3n<\/h4>\n<p>He creado uno dentro de un peque\u00f1o proyecto que mantengo con este tipo de herramientas y que puede verse <a href=\"https:\/\/git.astillas.net\/msat.git\">aqu\u00ed<\/a>. No hace gran cosa y debe llamarse en las siguientes condiciones:<\/p>\n<ol>\n<li>Los certificados se hayan renovado o creado por completo (y no de uno en uno).<\/li>\n<li>No queramos detener el servicio durante la renovaci\u00f3n.<\/li>\n<\/ol>\n<p>El programa necesita una configuraci\u00f3n m\u00ednima por si es necesario instalarlo en sistemas con otra disposici\u00f3n. Lee, si existe, el archivo <code>\/etc\/letsencrypt.conf\u00a0<\/code>que tiene lo siguiente como predeterminado:<\/p>\n<pre class=\"lang:ini decode:true  \"># Directorio ra\u00edz de los certificados\r\nTARGET=\/etc\/letsencrypt\/live\r\n\r\n# Grupo y m\u00e1scara de archivos y directorios\r\nGROUP=ssl-cert\r\nDIRMODE=0750\r\nMODE=0640\r\n\r\n# Servicios a comprobar y reiniciar\r\nSERVICES=\"qpsmtpd exim4 prosody apache2 dovecot\" \r\n\r\n# Par\u00e1metros para recibir los certificados desde \r\n# el sistema que los genera (opcional)\r\nSOURCE=\/tmp\/letsencrypt\r\nFILES=\"fullchaim.pem pr\u00ecvkey.pem chain.pem cert.pem cert.csr\"\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; porque \u00e9sto empieza a parecer un sindi\u00f3s y as\u00ed no se puede.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[18,699,554,35],"class_list":["post-2346","post","type-post","status-publish","format-standard","hentry","category-software","tag-administracion-de-sistemas","tag-certbot","tag-lets-encrypt","tag-seguridad"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/2346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=2346"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/2346\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=2346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=2346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=2346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}