<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>El hilo del laberinto (Publicaciones sobre Apache HTTP)</title><link>https://blog.jcea.es/</link><description></description><atom:link href="https://blog.jcea.es/categories/apache-http.xml" rel="self" type="application/rss+xml"></atom:link><language>es</language><lastBuildDate>Sat, 11 Jul 2026 17:53:22 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Compilar "Apache HTTP" con soporte ACME en SmartOS</title><link>https://blog.jcea.es/posts/20230331-pkgsrc_apache_acme.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;a class="reference external" href="https://httpd.apache.org/"&gt;Apache HTTP&lt;/a&gt; añadió soporte nativo para el protocolo &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment"&gt;ACME&lt;/a&gt;
(renovación automática de certificados &lt;a class="reference external" href="https://es.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt;) en la versión
2.4.30 del servidor, como un componente opcional y experimental
del mismo. La versión del &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Paquete_de_software"&gt;paquete&lt;/a&gt; &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Pkgsrc"&gt;PkgSrc&lt;/a&gt; distribuido en &lt;a class="reference external" href="https://es.wikipedia.org/wiki/SmartOS"&gt;SmartOS&lt;/a&gt;
no tiene dicho módulo, así que en abril de 2020 pedí que se
incluyese.&lt;/p&gt;
&lt;p&gt;La respuesta fue algo decepcionante:  Se añadía a &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Pkgsrc"&gt;PkgSrc&lt;/a&gt; la
opción de &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Compilador"&gt;compilar&lt;/a&gt; ese módulo opcional, &lt;a class="reference external" href="https://httpd.apache.org/docs/2.4/mod/mod_md.html"&gt;mod_md&lt;/a&gt;, pero dado que sus
propios autores lo tienen marcado como experimental, el &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Paquete_de_software"&gt;paquete&lt;/a&gt;
precompilado para &lt;a class="reference external" href="https://es.wikipedia.org/wiki/SmartOS"&gt;SmartOS&lt;/a&gt; seguiría sin incluirlo de serie.&lt;/p&gt;
&lt;p&gt;Pero, al menos, ahora puedo &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Compilador"&gt;compilarlo&lt;/a&gt; de forma trivial yo mismo
si lo necesito.&lt;/p&gt;
&lt;p&gt;No voy a entrar en detalles sobre cómo &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Compilador"&gt;compilar&lt;/a&gt; &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Paquete_de_software"&gt;paquetes&lt;/a&gt; en
&lt;a class="reference external" href="https://es.wikipedia.org/wiki/Pkgsrc"&gt;PkgSrc&lt;/a&gt; para &lt;a class="reference external" href="https://es.wikipedia.org/wiki/SmartOS"&gt;SmartOS&lt;/a&gt;. Este blog tienen muchos artículos sobre
este tema, accesibles desde el menú de &lt;em&gt;Tags&lt;/em&gt; de la parte superior
de la página.&lt;/p&gt;
&lt;p&gt;Los pasos concretos para &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Compilador"&gt;compilar&lt;/a&gt; &lt;a class="reference external" href="https://httpd.apache.org/"&gt;Apache HTTP&lt;/a&gt; con el módulo
&lt;a class="reference external" href="https://httpd.apache.org/docs/2.4/mod/mod_md.html"&gt;mod_md&lt;/a&gt; en una &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Solaris_Containers"&gt;zona&lt;/a&gt; &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Pkgsrc"&gt;PkgSrc&lt;/a&gt; de &lt;a class="reference external" href="https://es.wikipedia.org/wiki/SmartOS"&gt;SmartOS&lt;/a&gt; son los siguientes:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20230331-pkgsrc_apache_acme.html"&gt;Leer más…&lt;/a&gt; (quedan 4 minutos de lectura)&lt;/p&gt;&lt;/div&gt;</description><category>ACME</category><category>Apache HTTP</category><category>pkgsrc</category><category>SmartOS</category><guid>https://blog.jcea.es/posts/20230331-pkgsrc_apache_acme.html</guid><pubDate>Fri, 31 Mar 2023 17:31:00 GMT</pubDate></item><item><title>BORRADOR: Evaluación de Apache HTTP server como proxy/caché HTTPS en ambos extremos</title><link>https://blog.jcea.es/posts/20170719-apache.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;div class="admonition warning"&gt;
&lt;p class="first admonition-title"&gt;Advertencia&lt;/p&gt;
&lt;p&gt;Este documento se escribió en junio de 2013 como un borrador de
informe para un cliente. El informe no llegó a completarse
nunca porque al cliente le bastó el borrador para avanzar al
siguiente paso del proyecto.&lt;/p&gt;
&lt;p&gt;Por tanto, se trata de un documento incompleto y que, además,
refleja el estado de la tecnología en junio de 2013. Las cosas
han evolucionado desde entonces, naturalmente.&lt;/p&gt;
&lt;blockquote&gt;
La necesidad concreta del cliente es un proxy &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt; cuyo
&lt;a class="reference external" href="https://es.wikipedia.org/wiki/Backend"&gt;backend&lt;/a&gt; sea también &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;.&lt;/blockquote&gt;
&lt;p class="last"&gt;Este documento se ha publicado por interés histórico y con el
permiso explícito del cliente.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="contents topic" id="contenido"&gt;
&lt;p class="topic-title"&gt;Contenido&lt;/p&gt;
&lt;ul class="auto-toc simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#introduccion" id="id8"&gt;1   Introducción&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#requisitos" id="id9"&gt;2   Requisitos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#evaluacion-preliminar" id="id10"&gt;3   Evaluación preliminar&lt;/a&gt;&lt;ul class="auto-toc"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#apache-http-2-4" id="id11"&gt;3.1   Apache HTTP 2.4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#estudio-de-la-competencia-de-apache-http" id="id12"&gt;3.2   Estudio de la competencia de Apache HTTP&lt;/a&gt;&lt;ul class="auto-toc"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#varnish" id="id13"&gt;3.2.1   Varnish&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#nginx" id="id14"&gt;3.2.2   Nginx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#lighttpd" id="id15"&gt;3.2.3   lighttpd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#ha-proxy" id="id16"&gt;3.2.4   ha-proxy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#apache-traffic-server" id="id17"&gt;3.2.5   Apache Traffic Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#squid" id="id18"&gt;3.2.6   Squid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#g-wan" id="id19"&gt;3.2.7   g-wan&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#evaluacion" id="id20"&gt;4   Evaluación&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#detalles-a-verificar" id="id21"&gt;5   Detalles a verificar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://blog.jcea.es/posts/20170719-apache.html#conclusion-y-recomendacion-final" id="id22"&gt;6   Conclusión y recomendación final&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="introduccion"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://blog.jcea.es/posts/20170719-apache.html#id8"&gt;1   Introducción&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;DXXXl CXXXn se pone en contacto telefónico conmigo la tarde del
domingo 28 de abril de 2013, indicándome que las divisiones de
banca del grupo SXXXr han sido amenazadas con ataques de
denegación de servicio, que se realizarían a partir del 7 de mayo.&lt;/p&gt;
&lt;p&gt;Con el fin de protegerse en lo posible, se está procediendo a
configurar sistemas y a contratar servicios externos de paliación
de ataques &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Ataque_de_denegaci%C3%B3n_de_servicio"&gt;DDoS&lt;/a&gt;. Simultáneamente se planea desarrollar tecnología
interna con este fin, con el propósito de disponer de varias vías
de defensa alternativas, con diferentes costes y calidades.&lt;/p&gt;
&lt;p&gt;En la conversación telefónica se me encarga la evaluación del
servidor web Apache como plataforma proxy para la detección y
prevención de ataques a servicios &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;. El plazo disponible es
de una semana y el trabajo se tasa en XXX €.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="requisitos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://blog.jcea.es/posts/20170719-apache.html#id9"&gt;2   Requisitos&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;El proyecto requiere cumplir estos requisitos:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20170719-apache.html"&gt;Leer más…&lt;/a&gt; (quedan 13 minutos de lectura)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>Consultoría</category><guid>https://blog.jcea.es/posts/20170719-apache.html</guid><pubDate>Wed, 19 Jul 2017 16:05:00 GMT</pubDate></item><item><title>OCSP Stapling y no cachear errores OCSP en Apache</title><link>https://blog.jcea.es/posts/20151228-ocsp.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;He tratado el tema de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/OCSP_Stapling"&gt;&lt;em&gt;OCSP Stapling&lt;/em&gt;&lt;/a&gt; antes. Por ejemplo,
&lt;a class="reference external" href="https://blog.jcea.es/posts/20140528-ocsp_stapling.html"&gt;OCSP Stapling y la privacidad de tus usuarios&lt;/a&gt;. Resumiendo: &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;&lt;em&gt;Online Certificate Status Protocol&lt;/em&gt;&lt;/a&gt; permite
comprobar en tiempo real si un certificado &lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt; está revocado o
no, pero ello supone comprometer la privacidad de nuestros
usuarios. Usando &lt;a class="reference external" href="https://en.wikipedia.org/wiki/OCSP_Stapling"&gt;&lt;em&gt;OCSP Stapling&lt;/em&gt;&lt;/a&gt;, el servidor web se hace cargo de
solicitar el estado &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt;, se lo guarda mientras siga siendo
válido y envía el resultado a cada navegador que se conecta para
evitar que lo haga el propio navegador del usuario. Esto mejora la
velocidad de respuesta percibida y no compromete la privacidad del
usuario.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/OCSP_Stapling"&gt;&lt;em&gt;OCSP Stapling&lt;/em&gt;&lt;/a&gt; debería funcionar bien, pero de la teoría a la
práctica siempre hay un trecho. Léase, por ejemplo, mi artículo
&lt;a class="reference external" href="https://blog.jcea.es/posts/20150622-ocsp_fail.html"&gt;OCSP y el depender de la profesionalidad ajena&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20151228-ocsp.html"&gt;Leer más…&lt;/a&gt; (quedan 1 minutos de lectura)&lt;/p&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>OCSP</category><category>TLS</category><category>X.509</category><guid>https://blog.jcea.es/posts/20151228-ocsp.html</guid><pubDate>Mon, 28 Dec 2015 15:58:00 GMT</pubDate></item><item><title>Bugs: Firefox, favicon y webs protegidas</title><link>https://blog.jcea.es/posts/20151016-firefox_favicon.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;Este artículo va sobre esos bugs puñeteros e imposibles que se
diagnostican con facilicidad cuando tienes acceso a los recursos
apropiados. En este caso, los logs del servidor web.&lt;/p&gt;
&lt;p&gt;Este bug es simple de explicar: Si una web está protegida con
usuario/clave, lo normal es que el &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Favicon"&gt;favicon&lt;/a&gt; no funcione en
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Firefox"&gt;Firefox&lt;/a&gt;. ¿Por qué?. Porque cuando &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Firefox"&gt;Firefox&lt;/a&gt; solicita el &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Favicon"&gt;favicon&lt;/a&gt;
al servidor no envía las credenciales y el servidor web le
denegará el acceso.&lt;/p&gt;
&lt;p&gt;En el log del servidor web veía algo de este estilo:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
IP - [15/Oct/2015:12:06:26 +0200] "GET /icons/favicon.png HTTP/1.1" 401 381 [...]
&lt;/pre&gt;
&lt;p&gt;El código &lt;span class="kbd"&gt;401&lt;/span&gt; indica &lt;a class="reference external" href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error"&gt;acceso denegado&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La solución obvia es "desproteger" el &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Favicon"&gt;favicon&lt;/a&gt; de forma selectiva.
En &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Apache_HTTP_Server"&gt;Apache HTTP Server&lt;/a&gt; sería algo de este estilo:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20151016-firefox_favicon.html"&gt;Leer más…&lt;/a&gt; (quedan 1 minutos de lectura)&lt;/p&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>Bugs</category><category>Firefox</category><guid>https://blog.jcea.es/posts/20151016-firefox_favicon.html</guid><pubDate>Thu, 15 Oct 2015 23:10:00 GMT</pubDate></item><item><title>HTTP/2 ha llegado y aquí lo tienes funcionando</title><link>https://blog.jcea.es/posts/20151015-HTTP2.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTP/2"&gt;HTTP/2&lt;/a&gt; se publicó de forma oficial en mayo de 2015, como
&lt;a class="reference external" href="https://tools.ietf.org/html/rfc7540"&gt;RFC 7540&lt;/a&gt;. La semántica no ha cambiado respecto al viejo
&lt;a class="reference external" href="https://tools.ietf.org/html/rfc2616"&gt;HTTP/1.1&lt;/a&gt;, pero &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTP/2"&gt;HTTP/2&lt;/a&gt; proporciona un mecanismo de transporte
diferente con varias mejoras interesantes. En particular, se
pueden multiplexar varias peticiones &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP&lt;/a&gt; concurrentes a través
de una única conexión &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP/IP&lt;/a&gt;. Esto reduce la latencia
considerablemente mientras, de forma simultánea, se reduce la
carga en el servidor.&lt;/p&gt;
&lt;p&gt;Todos los navegadores modernos (incluyendo las versiones recientes
de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Android_%28operating_system%29"&gt;Android&lt;/a&gt; y de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/IOS"&gt;iOS&lt;/a&gt;) soportan &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTP/2"&gt;HTTP/2&lt;/a&gt;. Bien. Más aún, &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Google_Chrome"&gt;Chrome&lt;/a&gt; y
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Firefox"&gt;Firefox&lt;/a&gt; solo intentarán usar &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTP/2"&gt;HTTP/2&lt;/a&gt; cuando la conexión se
realice de forma segura (&lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;). Genial. Dado que &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTP/2"&gt;HTTP/2&lt;/a&gt; supone
una mejora real pero simple de desplegar y que dicho despliegue
supone migrar a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;, esta jugada es -de hecho- un buen
incentivo para que las webs migren a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La versión 2.4.17 de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Apache_HTTP_Server"&gt;Apache HTTP Server&lt;/a&gt; incluye soporte de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTP/2"&gt;HTTP/2&lt;/a&gt; de
forma nativa. A fecha de hoy, esto requiere compilar &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Apache_HTTP_Server"&gt;Apache HTTP Server&lt;/a&gt;
2.4.17 o superior desde el código fuente y además:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20151015-HTTP2.html"&gt;Leer más…&lt;/a&gt; (quedan 3 minutos de lectura)&lt;/p&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>Blog</category><category>HTTP</category><category>OpenSSL</category><category>TLS</category><guid>https://blog.jcea.es/posts/20151015-HTTP2.html</guid><pubDate>Thu, 15 Oct 2015 13:10:00 GMT</pubDate></item><item><title>OCSP y el depender de la profesionalidad ajena</title><link>https://blog.jcea.es/posts/20150622-ocsp_fail.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;He escrito ya antes sobre &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;&lt;em&gt;Online Certificate Status Protocol&lt;/em&gt;&lt;/a&gt;. Puedes ver el &lt;em&gt;tag&lt;/em&gt;
&lt;a class="reference external" href="https://blog.jcea.es/categories/ocsp.html"&gt;OCSP&lt;/a&gt; de este blog. En concreto en
&lt;a class="reference external" href="https://blog.jcea.es/posts/20140520-revocacion_ssl.html"&gt;El triste estado de las revocaciones SSL en Internet&lt;/a&gt; expongo el hecho objetivo de que la
mayoría de los navegadores web no comprueban la revocación de
certificados o la comprueban de forma muy...  &lt;strong&gt;peculiar&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Por ejemplo, con la configuración por defecto, un navegador normal
que hace verificaciones &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; hace lo siguiente:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;Hay navegadores que no hacen comprobaciones &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; para
certificados &lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt; normales, solo para los certificados &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Extended_Validation_Certificate"&gt;EV&lt;/a&gt;.
Por ejemplo, &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple&lt;/a&gt; &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Safari_%28web_browser%29"&gt;Safari&lt;/a&gt; (el navegador de Mac OS X y de
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/IOS"&gt;iOS&lt;/a&gt;). Ni que decir tiene que la inmensa mayoría de los
certificados &lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt; &lt;strong&gt;no&lt;/strong&gt; son &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Extended_Validation_Certificate"&gt;EV&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Supongamos que el navegador decide hacer una consulta &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt;. En
este caso, si el servidor &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; no responde en absoluto, no
pasa nada. El certificado &lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt; se dará por bueno. Esto es una
vía de ataque evidente si nos conectamos a través de una red
bajo el control de un ente malicioso.&lt;/p&gt;
&lt;p&gt;¿Por qué se hace así? Porque no es raro que lo servidores &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt;
de las entidades de certificación estén caídos o saturados. Es
decir, no recibir respuesta a la petición &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; es rutina. Como
no es aceptable que el usuario del navegador reciba avisos de
seguridad o se le deniegue el acceso a la mitad de la webs que
visita cada día, los navegadores han sido prácticos y aceptan
el hecho habitual de que no obtener una respuesta &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; no
tiene por qué indicar nada feo (al margen de la profesionalidad
dudosa de esa entidad de certificación, claro).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Una petición &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; supone una pérdida de privacidad para el
usuario. Explico el problema y la solución en mi artículo
&lt;a class="reference external" href="https://blog.jcea.es/posts/20140528-ocsp_stapling.html"&gt;OCSP Stapling y la privacidad de tus usuarios&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Resumiendo, el servidor web de un dominio accesible por &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;
puede hacer una petición &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; para su propio certificado
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt;, cachear ese resultado durante unas horas e incluir esa
respuesta en la negociación &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Transport_Layer_Security"&gt;TLS&lt;/a&gt; entre el servidor &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt; y el
navegador. De esta manera el navegador se ahorra la petición
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; y el tiempo de espera, y el usuario gana privacidad.&lt;/p&gt;
&lt;p&gt;Una situación &lt;em&gt;Win-Win&lt;/em&gt; de libro.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20150622-ocsp_fail.html"&gt;Leer más…&lt;/a&gt; (quedan 5 minutos de lectura)&lt;/p&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>Cloud</category><category>OCSP</category><category>StartSSL</category><category>TLS</category><category>X.509</category><guid>https://blog.jcea.es/posts/20150622-ocsp_fail.html</guid><pubDate>Mon, 22 Jun 2015 15:27:00 GMT</pubDate></item><item><title>Servir WebDAV tras un proxy HTTP/HTTPS</title><link>https://blog.jcea.es/posts/20150507-proxy_webdav.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/WebDAV"&gt;Web Distributed Authoring and Versioning&lt;/a&gt; (&lt;a class="reference external" href="https://en.wikipedia.org/wiki/WebDAV"&gt;WebDAV&lt;/a&gt;) es una extensión del protocolo &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP&lt;/a&gt; que añade
verbos adicionales para poder, por ejemplo, realizar cambios en el
servidor. Lo más evidente es almacenar o modificar ficheros, pero
los cambios pueden ser semánticos. Por ejemplo, modificaciones
coordinadas en documentos compartidos como un calendario o una
agenda telefónica.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://httpd.apache.org/"&gt;Apache&lt;/a&gt; soporta &lt;a class="reference external" href="https://en.wikipedia.org/wiki/WebDAV"&gt;WebDAV&lt;/a&gt; y, de hecho, es la opción que yo
recomiendo en vez del vetusto &lt;a class="reference external" href="https://en.wikipedia.org/wiki/File_Transfer_Protocol"&gt;FTP&lt;/a&gt;, por ejemplo. Hay muchas
ventajas: atravesar cortafuegos con facilidad, cifrado integrado a
través de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt; y, en general, unificación con toda la
infraestructura web.&lt;/p&gt;
&lt;p&gt;Una cosa que suelo hacer con frecuencia es dar acceso a
infraestructura protegida o unificar varios servidores web bajo un
árbol común. Esto lo hago a través del módulo &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Mod_proxy"&gt;mod_proxy&lt;/a&gt; de
&lt;a class="reference external" href="https://httpd.apache.org/"&gt;Apache&lt;/a&gt;. Básicamente &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Mod_proxy"&gt;mod_proxy&lt;/a&gt; puede hacer que
&lt;a class="reference external" href="http://www.example.com/servidorA"&gt;http://www.example.com/servidorA&lt;/a&gt; nos enseñe el contenido del
servidor &lt;strong&gt;A&lt;/strong&gt; y que &lt;a class="reference external" href="http://www.example.com/servidorB"&gt;http://www.example.com/servidorB&lt;/a&gt; nos muestre
el contenido del servidor &lt;strong&gt;B&lt;/strong&gt;. Hacer esto con &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Mod_proxy"&gt;mod_proxy&lt;/a&gt; es
trivial, rutina. El cliente web se conecta a
&lt;a class="reference external" href="http://www.example.com/"&gt;http://www.example.com/&lt;/a&gt;, indica la carpeta que quiere y &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Mod_proxy"&gt;mod_proxy&lt;/a&gt;
realiza una petición &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP&lt;/a&gt;/&lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt; &lt;em&gt;por detrás&lt;/em&gt; al servidor
adecuado para completar la petición del cliente.&lt;/p&gt;
&lt;p&gt;Es importante, en estas circunstancias, que los enlaces que genera
el servidor &lt;strong&gt;A&lt;/strong&gt; sean o bien relativos o que se cambien para que
parezcan provenir de &lt;a class="reference external" href="http://www.example.com/servidorA"&gt;http://www.example.com/servidorA&lt;/a&gt;. En el
contexto de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Mod_proxy"&gt;mod_proxy&lt;/a&gt; solemos usar la directiva &lt;a class="reference external" href="https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypassreverse"&gt;ProxyPassReverse&lt;/a&gt;.
Esta directiva nos permite interceptar las redirecciones &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP&lt;/a&gt;
generadas por el servidor &lt;strong&gt;A&lt;/strong&gt; para que parezcan provenir de
&lt;a class="reference external" href="http://www.example.com/servidorA"&gt;http://www.example.com/servidorA&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;¿Qué pasa con &lt;a class="reference external" href="https://en.wikipedia.org/wiki/WebDAV"&gt;WebDAV&lt;/a&gt;?. El problema es que &lt;a class="reference external" href="https://en.wikipedia.org/wiki/WebDAV"&gt;WebDAV&lt;/a&gt; nos devuelve
direcciones absolutas.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20150507-proxy_webdav.html"&gt;Leer más…&lt;/a&gt; (quedan 4 minutos de lectura)&lt;/p&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>WebDAV</category><guid>https://blog.jcea.es/posts/20150507-proxy_webdav.html</guid><pubDate>Thu, 07 May 2015 16:36:00 GMT</pubDate></item><item><title>¡Cifrad, cifrad, malditos!</title><link>https://blog.jcea.es/posts/20141104-https.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;Con todo lo que está cayendo en temas de privacidad y seguridad y
con la potencia de las máquinas actuales, no hay excusas para no
emplear cifrado en todas nuestras comunicaciones en Internet.&lt;/p&gt;
&lt;p&gt;En este artículo no voy a entrar en el aspecto técnico ni
activista de desplegar cifrado en las comunicaciones. Baste con
decir, de momento, que no hay ningún motivo para &lt;strong&gt;NO&lt;/strong&gt; cifrar y
muchos, muchísimos, para sí hacerlo.&lt;/p&gt;
&lt;p&gt;A pesar de ser &lt;strong&gt;muy insistente&lt;/strong&gt; en todo este tema, he sido un
pobre ejemplo práctico hasta ahora. Llevo usando &lt;a class="reference external" href="https://en.wikipedia.org/wiki/HTTP_Secure"&gt;HTTPS&lt;/a&gt; mucho
tiempo, pero siempre he usado &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Self-signed_certificate"&gt;certificados autofirmados&lt;/a&gt;. No voy a entrar en
los detalles del estado vergonzoso de las &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Certificate_authority"&gt;autoridades de certificación&lt;/a&gt; o que el
despliegue de &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions"&gt;DNSSEC&lt;/a&gt; progrese a paso de tortuga. Habrá tiempo de
tratar todo eso en otros artículos.&lt;/p&gt;
&lt;p&gt;Desde el 3 de noviembre de 2014 empleo certificados &lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt;
validados por los navegadores para:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://www.jcea.es/"&gt;https://www.jcea.es/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://blog.jcea.es/"&gt;https://blog.jcea.es/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://mailman.jcea.es/"&gt;https://mailman.jcea.es/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que sigue describe este despliegue para entornos Unix o
similares (Linux), el servidor web &lt;a class="reference external" href="https://httpd.apache.org/"&gt;Apache&lt;/a&gt; y el programa &lt;a class="reference external" href="https://en.wikipedia.org/wiki/OpenSSL"&gt;OpenSSL&lt;/a&gt;.
No contaré los detalles básicos porque ya se explican en infinidad
de páginas web.&lt;/p&gt;
&lt;div class="section" id="lo-basico"&gt;
&lt;h2&gt;Lo básico&lt;/h2&gt;
&lt;p&gt;El primer paso consiste en generar un certificado &lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="code bash"&gt;&lt;a name="rest_code_6963edaec3fe43e1816852f71967bf2c-1"&gt;&lt;/a&gt;$ openssl genrsa -out www.jcea.key &lt;span class="m"&gt;2048&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;Con la configuración actual, esto generará un certificado &lt;a class="reference external" href="https://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt;
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29"&gt;RSA&lt;/a&gt; &lt;a class="footnote-reference" href="https://blog.jcea.es/posts/20141104-https.html#rsaf" id="id1"&gt;[2]&lt;/a&gt; de 2048 bits y &lt;a class="reference external" href="https://en.wikipedia.org/wiki/SHA-1"&gt;SHA-1&lt;/a&gt; &lt;a class="footnote-reference" href="https://blog.jcea.es/posts/20141104-https.html#hashes" id="id2"&gt;[1]&lt;/a&gt; como algoritmo de
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Cryptographic_hash_function"&gt;hash&lt;/a&gt;. El fichero generado debe protegerse como oro en paño, así
que posiblemente haya que cambiar su propietario y los permisos de
acceso en el sistema de ficheros. Debe mantenerse secreto a toda
costa.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20141104-https.html"&gt;Leer más…&lt;/a&gt; (quedan 7 minutos de lectura)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>OCSP</category><category>Privacidad</category><category>Seguridad</category><category>StartSSL</category><category>TLS</category><category>X.509</category><guid>https://blog.jcea.es/posts/20141104-https.html</guid><pubDate>Mon, 03 Nov 2014 23:16:00 GMT</pubDate></item><item><title>OCSP Stapling y la privacidad de tus usuarios</title><link>https://blog.jcea.es/posts/20140528-ocsp_stapling.html</link><dc:creator>Jesús Cea Avión</dc:creator><description>&lt;div&gt;&lt;p&gt;En un artículo anterior titulado &lt;a class="reference external" href="https://blog.jcea.es/posts/20140520-revocacion_ssl.html"&gt;El triste estado de las revocaciones SSL en Internet&lt;/a&gt;
comento que &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;&lt;em&gt;Online Certificate Status Protocol&lt;/em&gt;&lt;/a&gt; (OCSP) tiene varios problemas:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Un serio problema de privacidad para el usuario final: cada vez
que entras es una página web HTTPS, tu navegador hará una
consulta &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt;, &lt;em&gt;filtrando&lt;/em&gt; el hecho de que estás entrando en
esa web en concreto. Esa información llega a la entidad de
certificación que "avala" el certificado SSL de ese servidor y,
naturalmente, es accesible también para todas las redes
intermedias entre ella y tu ordenador&lt;/li&gt;
&lt;li&gt;El volumen de tráfico en la entidad de certificación es
proporcional al volumen de usuarios de una web determinada. Si
una web tiene éxito, la entidad de certificación tendrá un
coste adicional, sin ningún beneficio.&lt;/li&gt;
&lt;li&gt;Para el usuario final, la consulta &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; supone añadir
latencia, porque el navegador tiene que saber que el
certificado SSL no ha sido revocado antes de mostrarte el
contenido de la web.&lt;/li&gt;
&lt;li&gt;Si la entidad de certificación no responde a la petición &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt;,
el navegador debe elegir qué hacer. Ahora mismo, la
configuración por defecto suele ser &lt;em&gt;soft-fail&lt;/em&gt;. Es decir, si
la respuesta &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt; es "certificado revocado" o "certificado
desconocido", el navegador nos denegará el acceso, pero si no
nos llega ninguna respuesta &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt;, el navegador considerará que
todo ha ido bien. Evidentemente, si estamos sufriendo un &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack"&gt;&lt;em&gt;Man in the Middle&lt;/em&gt;&lt;/a&gt;
o una impersonación, el atacante nos filtrará &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ocsp"&gt;OCSP&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://blog.jcea.es/posts/20140528-ocsp_stapling.html"&gt;Leer más…&lt;/a&gt; (quedan 3 minutos de lectura)&lt;/p&gt;&lt;/div&gt;</description><category>Apache HTTP</category><category>OCSP</category><category>Privacidad</category><category>Seguridad</category><category>TLS</category><category>X.509</category><guid>https://blog.jcea.es/posts/20140528-ocsp_stapling.html</guid><pubDate>Wed, 28 May 2014 15:57:00 GMT</pubDate></item></channel></rss>