<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OpenSSL on Adrián Lois</title><link>https://adrianlois.com/tags/openssl/</link><description>Recent content in OpenSSL on Adrián Lois</description><generator>Hugo</generator><language>es</language><lastBuildDate>Tue, 02 May 2023 10:27:00 +0000</lastBuildDate><atom:link href="https://adrianlois.com/tags/openssl/index.xml" rel="self" type="application/rss+xml"/><item><title>Renovar SSL: comprobar coincidencia certificado/clave/CSR (OpenSSL)</title><link>https://adrianlois.com/posts/renovar-certificados-ssl-coincidencia-clave-csr-openssl/</link><pubDate>Thu, 01 Aug 2019 07:27:00 +0000</pubDate><guid>https://adrianlois.com/posts/renovar-certificados-ssl-coincidencia-clave-csr-openssl/</guid><description>&lt;p&gt;Al renovar los certificados de un servidor web podemos encontrarnos con errores en el momento de sustitución de los ficheros de certificados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apache + configuración SSLCipher strong&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-apacheconf" data-lang="apacheconf"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# SSLCiphers strong encryption&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLProtocol &lt;span style="color:#ff7b72"&gt;all&lt;/span&gt; -SSLv3 -TLSv1 -TLSv1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLHonorCipherOrder &lt;span style="color:#ff7b72"&gt;on&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLCompression &lt;span style="color:#ff7b72"&gt;off&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLSessionTickets &lt;span style="color:#ff7b72"&gt;off&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# SSL certs config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLEngine &lt;span style="color:#ff7b72"&gt;on&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLCertificateFile &lt;span style="color:#a5d6ff"&gt;/etc/apache2/ssl/web/public.crt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLCertificateKeyFile &lt;span style="color:#a5d6ff"&gt;/etc/apache2/ssl/web/private.key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSLCertificateChainFile &lt;span style="color:#a5d6ff"&gt;/etc/apache2/ssl/web/intermediate.crt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Nginx + configuración SSLCipher strong&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;ssl&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;on&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;ssl_protocols&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;TLSv1&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;TLSv1.1&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;TLSv1.2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Fix &amp;#39;The Logjam Attack&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;ssl_ciphers&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;on&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;ssl_dhparam&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;/etc/ssl/dh2048_param.pem&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;#SSL certs config
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;ssl_certificate&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;/etc/nginx/ssl/web/intermediate.crt&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;ssl_certificate_key&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;/etc/nginx/ssl/web/private.key&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="ca-bundle"&gt;
 CA Bundle
 &lt;a class="heading-link" href="#ca-bundle"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Si disponemos de un fichero &lt;a href="https://es.wikipedia.org/wiki/Autoridad_de_certificaci%C3%B3n" target="_blank" rel="noopener"&gt;CA Bundle&lt;/a&gt; no es otra cosa que un &lt;a href="https://es.wikipedia.org/wiki/Certificado_ra%C3%ADz" target="_blank" rel="noopener"&gt;certificado intermediate y raíz&lt;/a&gt; de la CA en un solo archivo, uno detrás del otro, debes combinarlos en uno solo para tener un CA_bundle completo. Los certificados raíz no son necesarios cuando se instala el certificado, para la instalación es suficiente activar en el servidor el correspondiente certificado intermediate.&lt;/p&gt;</description></item><item><title>OpenSSL: convertir certificados digitales (PFX, CSR, PEM, CRT, CER) y clave privada</title><link>https://adrianlois.com/posts/openssl-convertir-certificados-digitales-pfx-csr-pem-crt-cer-clave-privada/</link><pubDate>Sat, 09 Sep 2017 18:29:00 +0000</pubDate><guid>https://adrianlois.com/posts/openssl-convertir-certificados-digitales-pfx-csr-pem-crt-cer-clave-privada/</guid><description>&lt;p&gt;En Windows Server cuando se genera un certificado autofirmado por el propio servidor este se puede exportar por defecto en formato .pfx. Los certificados en formato .pfx contienen tanto la clave pública como la privada.&lt;/p&gt;
&lt;h2 id="tipos-de-formatos-más-frecuentes-de-certificados"&gt;
 Tipos de formatos más frecuentes de certificados
 &lt;a class="heading-link" href="#tipos-de-formatos-m%c3%a1s-frecuentes-de-certificados"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.CSR&lt;/code&gt; &lt;em&gt;(Certificate Signing Request)&lt;/em&gt;: Sería el archivo generado normalmente por el servidor que usará el certificado SSL. El CSR contiene información relativa a la organización.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.KEY&lt;/code&gt;: Es el archivo de clave privada para cifrar las solicitudes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.DER&lt;/strong&gt; &lt;em&gt;(Distinguish Encoding Rules)&lt;/em&gt;: Suelen tener la extensión CRT o CER. Es un tipo de codificación de certificados X.509, NO un tipo de certificado. Es un formato binario o raw.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.CRT .CERT .CER&lt;/strong&gt; &lt;code&gt;.PEM&lt;/code&gt; &lt;em&gt;(Privacy Enhanced Mail)&lt;/em&gt;: Ambos son usados indistintamente. .pem contiene el certificado y la clave, mientras que un fichero .crt solo contiene el certificado. Generalmente codificado en Base64, encerrado entre &amp;ldquo;&amp;mdash;BEGIN CERTIFICATE&amp;mdash;&amp;rdquo; y &amp;ldquo;&amp;mdash;END CERTIFICATE&amp;mdash;&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.CRL&lt;/strong&gt; &lt;em&gt;(Certificate Revocation List)&lt;/em&gt;: Fichero que contiene una lista de revocación de certificados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.P7B .P7C&lt;/strong&gt;: Estructura PKCS#7 SignedData sin datos, solo certificado(s) o CRL(s)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.PKCS12 (PKCS #12) .P12 .PFX&lt;/strong&gt;: Se usa en servidores Windows. Contiene todos los archivos en un único archivo, tanto la clave pública como la clave privada asociada, generada por el servidor en el momento en el que se generó el CSR.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si necesitamos extraer la clave privada podemos usar &lt;a href="https://www.openssl.org/" target="_blank" rel="noopener"&gt;OpenSSL&lt;/a&gt; el cual utilizará uno de los estándares de criptografía &lt;a href="https://es.wikipedia.org/wiki/PKCS" target="_blank" rel="noopener"&gt;PKCS&lt;/a&gt; (&lt;em&gt;Public-Key Cryptography Standards&lt;/em&gt;) concretamente &lt;a href="https://en.wikipedia.org/wiki/PKCS_12" target="_blank" rel="noopener"&gt;PKCS#12&lt;/a&gt; (formatos .PFX) que define un formato de fichero usado comúnmente para almacenar claves privadas con su certificado de clave pública protegido mediante clave simétrica (es decir, una passphrase o contraseña).&lt;/p&gt;</description></item></channel></rss>