{"id":3298,"date":"2020-02-24T12:26:25","date_gmt":"2020-02-24T11:26:25","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=3298"},"modified":"2020-02-24T12:26:25","modified_gmt":"2020-02-24T11:26:25","slug":"reflexiones-sobre-certificados-digitales-i","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2020\/02\/24\/reflexiones-sobre-certificados-digitales-i\/","title":{"rendered":"Reflexiones sobre certificados digitales (I)"},"content":{"rendered":"\n<p>Porque es un paso previo para crear certificados digitales con Let&#8217;s Enscrypt que incluyan comodines como en *.empresa.net. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p><a href=\"https:\/\/gandi.net\">gandi.net<\/a> ofrece un <a href=\"https:\/\/doc.rpc.gandi.net\/domain\/faq.html\">API<\/a> para poder gestionar los productos que tengo contratados con ellos. No estoy seguro de si son todos o no porque siguen a\u00fan en transici\u00f3n hacia su versi\u00f3n 5 y parece que no est\u00e1 del todo claro si est\u00e1 completa o no.<\/p>\n\n\n\n<p>En cualquier caso si se accede al panel de control empleando la versi\u00f3n 4, en la direcci\u00f3n <a href=\"https:\/\/v4.gandi.net\">https:\/\/v4.gandi.net<\/a> se puede obtener una clave para acceder al API v\u00eda XML. Primero una para efectuar pruebas y luego otra para acceder a los productos reales. La documentaci\u00f3n es bastante completa y los ejemplos aparecen descritos en varios lenguajes. He elegido Perl porque es lo que m\u00e1s seguridad me da y porque prefiero integrarlo en una peque\u00f1a aplicaci\u00f3n antes de hacerlo funcionar junto a certbot. <\/p>\n\n\n\n<p>Casi al mismo tiempo que escribo estas l\u00edneas me encuentro una <a href=\"https:\/\/www.preining.info\/blog\/2020\/01\/lets-encrypt-on-debian-buster-switching-from-acmetool-to-certbot\/\">entrada del blog<\/a> de Norbert Preining en el <em>planet<\/em> de Debian que va mucho m\u00e1s al grano que yo y lo resuelve de otra manera. Pero en mis condiciones prefiero seguir mi camino aunque me lleve m\u00e1s tiempo porque necesito entender el procedimiento. <\/p>\n\n\n\n<p>Norbert, por ejemplo, s\u00f3lo pasa por encima de la distribuci\u00f3n de certificados y yo, que veo grandes posibilidades en que estos certificados lleven comodines y se adapten  a un n\u00famero ilimitado de subdominios, tengo m\u00e1s problemas para ver una soluci\u00f3n clara. No s\u00e9 si emplear un modelo <em>push<\/em> que copie los certificados a los servidores cliente y reinicie los servicios o un modelo <em>pull<\/em> en el que sean \u00e9stos los que consulten cambios regularmente y hagan toda la tarea ellos mismos. <\/p>\n\n\n\n<p>Cualquiera de los dos m\u00e9todos tienen validez inicialmente y como no me decido por uno o por otro voy a enumerarlas aqu\u00ed:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-regular\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>M\u00e9todo<\/strong><\/td><td><strong>Ventajas<\/strong><\/td><td><strong>Desventajas<\/strong><\/td><\/tr><tr><td><strong>push<\/strong><\/td><td>&#8211; Los certificados se distribuyen inmediatamente.<br \/>&#8211; S\u00f3lo se precisa instalar un paquete en el servidor que gestiona los certificados.<\/td><td>&#8211; Se necesita automatizar accesos de root a root.<br \/>&#8211; Adem\u00e1s de copiar archivos es necesario ejecutar programas para reiniciar servicios.<br \/>&#8211; Si lo anterior falla es m\u00e1s dif\u00edcil de percibir y, por tanto, de notificar.<\/td><\/tr><tr><td><strong>pull<\/strong><\/td><td>&#8211; La importaci\u00f3n de certificados y su instalaci\u00f3n en la m\u00e1quina es m\u00e1s sencilla.<br \/>&#8211; La renovaci\u00f3n de servicios es m\u00e1s flexible.<br \/>&#8211; Si algo falla es m\u00e1s sencillo avisar sobre ello e incluso reintentarlo.<\/td><td>&#8211; Se precisan dos paquetes: uno en el servidor y otro en cada cliente. <br \/>&#8211; O se crea un mecanismo espec\u00edfico o pueden existir grandes diferencias de tiempo entre generaci\u00f3n y uso.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>As\u00ed que la elecci\u00f3n no es f\u00e1cil para m\u00ed. Por una parte estar\u00eda instalar y mantener un paquete en un \u00fanico servidor (que encima no tendr\u00eda que estar expuesto al exterior) y a\u00f1adir conexiones <em>delicadas<\/em> hacia las otras m\u00e1quinas que usar\u00e1n los certificados. Adem\u00e1s de transferir es necesario reiniciar servicios, y esa es otra. <\/p>\n\n\n\n<p>Puede darse la situaci\u00f3n de que <em>no<\/em> todas las m\u00e1quinas lo reciban, por un fallo concreto que corte el proceso de transmisi\u00f3n, y entonces existan servicios con certificados caducos o incompletos. <\/p>\n\n\n\n<p>El otro mecanismo aligera la carga de la m\u00e1quina que renueva certificados dado que son los otros los que se conectan, comprueban y descargan los certificados y ya con ellos hacen lo que necesiten hacer, como reiniciar servicios o algo m\u00e1s ex\u00f3tico. Es mantener dos paquetes y tambi\u00e9n se precisa una conexi\u00f3n <em>delicada<\/em> hacia el servidor central. Esta rutina de chequeo independiente est\u00e1 muy bien siempre que los certificados se renueven en fechas y horas concretas. \u00bf Qu\u00e9 ocurre si te piden, como me pasa ocasionalmente, que a\u00f1ada un nuevo servicio o cambie otro ? Que tendr\u00eda que implementar un mecanismo de aviso a los clientes para que sincronizasen. No estoy seguro ahora mismo de si eso se dar\u00eda con la suficiente asiduidad como para que mereciese la pena. <\/p>\n\n\n\n<p>Y creo que debo parar aqu\u00ed porque el razonamiento empieza a ser circular. Hagamos una pausa para dibujar algo que quede bonito y me ayude.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Referencias<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/doc.rpc.gandi.net\/domain\/faq.html\">Gandi.net Domain API FAQ<\/a><\/li><li><a href=\"https:\/\/doc.livedns.gandi.net\/\">Gandi LiveDNS API<\/a><\/li><li><a href=\"https:\/\/certbot.eff.org\/docs\/using.html#pre-and-post-validation-hooks\">certbot: Pre and Post validation hooks<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Porque es un paso previo para crear certificados digitales con Let&#8217;s Enscrypt que incluyan comodines como en *.empresa.net.<\/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":[14],"tags":[319,693,554,17,937,938],"class_list":["post-3298","post","type-post","status-publish","format-standard","hentry","category-internet","tag-dns","tag-gandi-net","tag-lets-encrypt","tag-perl","tag-rpc","tag-xml"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3298","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=3298"}],"version-history":[{"count":12,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3298\/revisions"}],"predecessor-version":[{"id":3456,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3298\/revisions\/3456"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=3298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=3298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=3298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}