{"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":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:137,&quot;href&quot;:&quot;https:\\\/\\\/gandi.net&quot;,&quot;archived_href&quot;:&quot;https:\\\/\\\/web-wp.archive.org\\\/web\\\/20170925104427\\\/https:\\\/\\\/www.gandi.net\\\/&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/www.gandi.net\\\/&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-04-16 12:27:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-21 03:17:29&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-25 06:49:37&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-25 06:49:37&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:353,&quot;href&quot;:&quot;https:\\\/\\\/doc.rpc.gandi.net\\\/domain\\\/faq.html&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:354,&quot;href&quot;:&quot;https:\\\/\\\/v4.gandi.net&quot;,&quot;archived_href&quot;:&quot;https:\\\/\\\/web-wp.archive.org\\\/web\\\/20181205052815\\\/https:\\\/\\\/v4.gandi.net\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-04-15 11:59:58&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-23 04:52:20&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-23 04:52:20&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:291,&quot;href&quot;:&quot;https:\\\/\\\/www.preining.info\\\/blog\\\/2020\\\/01\\\/lets-encrypt-on-debian-buster-switching-from-acmetool-to-certbot&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:355,&quot;href&quot;:&quot;https:\\\/\\\/doc.livedns.gandi.net&quot;,&quot;archived_href&quot;:&quot;https:\\\/\\\/web-wp.archive.org\\\/web\\\/20220707094900\\\/https:\\\/\\\/doc.livedns.gandi.net\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-04-15 12:00:06&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-04-23 04:52:25&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-23 04:52:25&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:356,&quot;href&quot;:&quot;https:\\\/\\\/certbot.eff.org\\\/docs\\\/using.html#pre-and-post-validation-hooks&quot;,&quot;archived_href&quot;:&quot;https:\\\/\\\/web-wp.archive.org\\\/web\\\/20211106014139\\\/https:\\\/\\\/certbot.eff.org\\\/docs\\\/using.html&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/eff-certbot.readthedocs.io\\\/using.html&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-04-23 04:52:20&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-23 04:52:20&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'><\/div>\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}]}}