{"id":135,"date":"2018-05-02T22:11:08","date_gmt":"2018-05-02T20:11:08","guid":{"rendered":"https:\/\/tiraquelibras.com\/blog\/?p=135"},"modified":"2019-12-26T17:00:54","modified_gmt":"2019-12-26T16:00:54","slug":"openssl-comandos-basicos","status":"publish","type":"post","link":"https:\/\/blog.tiraquelibras.com\/?p=135","title":{"rendered":"OpenSSL &#8211; certificados digitales"},"content":{"rendered":"<p>En esta entrada se explicar\u00e1n los comandos b\u00e1sicos para la generaci\u00f3n de certificados digitales con <a href=\"https:\/\/www.openssl.org\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">OpenSSL<\/a>, tanto para comunicaciones digitales como para servicios.<\/p>\n<p>Hay que tener en cuenta que un certificado est\u00e1 compuesto por una llave privada (.key), el certificado final (.crt o .pem o .pk12, &#8230;) y a veces son requeridos los certificados ra\u00edz e intermedio de la entidad certificadora (CA), que son p\u00fablicos en la mayor\u00eda de las ocasiones pudiendo ser descargados desde la web de la entidad. Para la solicitud del certificado se genera un archivo de petici\u00f3n (.csr), que solo ser\u00e1 necesario para la solicitud del certificado final.<\/p>\n<p>Con todo esto dicho, vamos al l\u00edo y veamos los comandos habituales para la administraci\u00f3n de certificados con <a href=\"https:\/\/www.openssl.org\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">OpenSSL<\/a>.<\/p>\n<hr \/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a0e87a77b26a\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a0e87a77b26a\"  aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Comandos_de_generacion\"  rel=\"nofollow\" target=\"_blank\">Comandos de generaci\u00f3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Certificado_autofirmado\"  rel=\"nofollow\" target=\"_blank\">Certificado autofirmado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Solicitud_de_certificado\"  rel=\"nofollow\" target=\"_blank\">Solicitud de certificado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Revocar_la_contrasena_del_certificado\"  rel=\"nofollow\" target=\"_blank\">Revocar la contrase\u00f1a del certificado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Generar_una_solicitud_sobre_una_llave_privada_existente\"  rel=\"nofollow\" target=\"_blank\">Generar una solicitud sobre una llave privada existente<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Generar_una_solicitud_sobre_un_certificado_existente\"  rel=\"nofollow\" target=\"_blank\">Generar una solicitud sobre un certificado existente<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Comandos_de_verificacion\"  rel=\"nofollow\" target=\"_blank\">Comandos de verificaci\u00f3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Verificar_una_solicitud_csr\"  rel=\"nofollow\" target=\"_blank\">Verificar una solicitud (.csr)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Verificar_una_llave_privada_key\"  rel=\"nofollow\" target=\"_blank\">Verificar una llave privada (.key)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Verificar_un_certificado_crt\"  rel=\"nofollow\" target=\"_blank\">Verificar un certificado (.crt)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Verificar_un_certificado_cer\"  rel=\"nofollow\" target=\"_blank\">Verificar un certificado (.cer)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Verificar_un_certificado_en_formato_PKCS12_file_pfx_or_p12\"  rel=\"nofollow\" target=\"_blank\">Verificar un certificado en formato\u00a0PKCS#12 file (.pfx or .p12)<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-13 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Depurando_con_OpenSSL\"  rel=\"nofollow\" target=\"_blank\">Depurando con OpenSSL<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Compatibilidad_entre_llave_privada_key_certificado_crt_y_solicitud_csr\"  rel=\"nofollow\" target=\"_blank\">Compatibilidad entre llave privada (.key), certificado (.crt) y solicitud (.csr)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Verificacion_de_host_remoto\"  rel=\"nofollow\" target=\"_blank\">Verificaci\u00f3n de host remoto<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-16 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Conversion_a_otros_formatos\"  rel=\"nofollow\" target=\"_blank\">Conversi\u00f3n a otros formatos<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#De_archivo_DER_crt_cer_der_a_PEM\"  rel=\"nofollow\" target=\"_blank\">De archivo DER (.crt .cer .der) a PEM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#De_archivo_PEM_a_DER\"  rel=\"nofollow\" target=\"_blank\">De archivo PEM a DER<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#De_archivo_PKCS12_file_pfx_p12_conteniendo_una_llave_privada_y_un_certificado_a_PEM\"  rel=\"nofollow\" target=\"_blank\">De archivo\u00a0PKCS#12 file (.pfx .p12) conteniendo una llave privada y un certificado a PEM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#De_archivo_PEM_y_llave_privada_a_PKCS12_pfx_p12\"  rel=\"nofollow\" target=\"_blank\">De archivo PEM y llave privada a PKCS#12 (.pfx .p12)<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-21 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Conclusion\"  rel=\"nofollow\" target=\"_blank\">Conclusi\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-22 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\/#Enlaces_de_interes\"  rel=\"nofollow\" target=\"_blank\">Enlaces de inter\u00e9s<\/a><\/li><\/ul><\/nav><\/div>\n<h1 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Comandos_de_generacion\"><\/span>Comandos de generaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Certificado_autofirmado\"><\/span>Certificado autofirmado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Este tipo de certificados no tiene coste alguno y ser\u00e1n completamente v\u00e1lidos para levantar un servicio SSL\/TLS en la m\u00e1quina, pero por contra no ser\u00e1n v\u00e1lidos para los navegadores Web al no estar firmados por una entidad o autoridad certificadora (CA) pudiendo esto tambi\u00e9n afectar a una aplicaci\u00f3n que requiera un CA v\u00e1lido para levantar una comunicaci\u00f3n. Si a\u00fan as\u00ed te es v\u00e1lido este tipo de certificados, aqu\u00ed te muestro el comando necesario. En este caso no se solicita una contrase\u00f1a para proteger el certificado.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout llavePrivada.key -out certificado.crt<\/pre>\n<p>&nbsp;<\/p>\n<p>Es necesario tener en cuenta que este comando genera un certificado que usa una funci\u00f3n de encriptaci\u00f3n de tipo <em><strong>SHA1<\/strong><\/em>\u00a0y este est\u00e1 descatalogado en la mayor\u00eda de entidades de certificaci\u00f3n, los cuales lo tienen fuera de cat\u00e1logo, y adem\u00e1s no est\u00e1 permitido por el <strong>Centro Criptol\u00f3gico Nacional<\/strong> en su documento oficial con los requisitos para la obtenci\u00f3n del Esquema Nacional de Seguridad (ENS), ver el siguiente enlace con esta informaci\u00f3n pinchando <a href=\"https:\/\/www.ccn-cert.cni.es\/series-ccn-stic\/800-guia-esquema-nacional-de-seguridad\/513-ccn-stic-807-criptologia-de-empleo-en-el-ens\/file.html\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">aqu\u00ed<\/a>.<\/p>\n<p>Para generar el certificado autofirmado con una funci\u00f3n de las permitidas por el CCN-CERT debemos de indicar el par\u00e1metro <em><strong>-sha256<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout llavePrivada.key -out certificado.crt<\/pre>\n<p>&nbsp;<\/p>\n<p>Esto nos genera dos archivos, la semilla (.key) y el certificado final (.crt), indicados en el comando anterior.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">certificado.crt  llavePrivada.key<\/pre>\n<p>En el siguiente enlace se puede consultar como configurar un certificado autofirmado en Apache, pinchando <a href=\"https:\/\/www.sslshopper.com\/article-how-to-create-and-install-an-apache-self-signed-certificate.html\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">aqu\u00ed<\/a><\/p>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Solicitud_de_certificado\"><\/span>Solicitud de certificado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>El siguiente comando genera la llave privada (.key) y la solicitud del certificado (.csr) para enviar a la entidad certificadora (CA). En este caso se solicita una contrase\u00f1a opcional para proteger el certificado, pero si se indica alguna afectar\u00e1 al reinicio del servidor web, ya que te va a solicitar una por cada certificado que tenga configurado con contrase\u00f1a, afectando al inicio del servicio.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl req -out tiraquelibras.csr -new -newkey rsa:2048 -nodes -keyout tiraquelibras.key<\/pre>\n<p>&nbsp;<\/p>\n<p>Esto genera dos archivos, uno con la llave privad (.key) y otro con la solicitud (.csr).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">tiraquelibras.csr  tiraquelibras.key<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Revocar_la_contrasena_del_certificado\"><\/span>Revocar la contrase\u00f1a del certificado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Si hemos especificado una contrase\u00f1a a la hora de generar la petici\u00f3n del certificado podemos eliminarla con el siguiente comando.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl rsa -in tiraquelibras.key -out tiraquelibras.key<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Generar_una_solicitud_sobre_una_llave_privada_existente\"><\/span>Generar una solicitud sobre una llave privada existente<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Podemos generar una solicitud de certificado a partir de una llave privada existente con el siguiente comando.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl req -out CSR.csr -key tiraquelibras.key -new<\/pre>\n<p>Esto solo genera un archivo nuevo con la solicitud (.csr), ya que mantiene la llave privada existente (.key).<\/p>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Generar_una_solicitud_sobre_un_certificado_existente\"><\/span>Generar una solicitud sobre un certificado existente<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Podemos generar una solicitud sobre un certificado ya existente (.crt) con su llave privada (.key), lo cual obtendr\u00e1 los datos indicados para la generaci\u00f3n del certificado anterior y no pedir\u00e1 ning\u00fan dato adicional para el nuevo.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl x509 -x509toreq -in tiraquelibras.crt -out CSR.csr -signkey tiraquelibras.key<\/pre>\n<p>&nbsp;<\/p>\n<p>Este comando solo generar\u00e1 un nuevo archivo con la solicitud (.csr).<\/p>\n<hr \/>\n<h1 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Comandos_de_verificacion\"><\/span>Comandos de verificaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Verificar_una_solicitud_csr\"><\/span>Verificar una solicitud (.csr)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para verificar los datos de una solicitud (.csr) usaremos el siguiente comando.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl req -text -noout -verify -in CSR.csr<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Verificar_una_llave_privada_key\"><\/span>Verificar una llave privada (.key)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para verificar los datos de una llave privada (.key) usaremos el siguiente comando.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl rsa -in tiraquelibras.key -check<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Verificar_un_certificado_crt\"><\/span>Verificar un certificado (.crt)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para verificar un certificado (.crt) usaremos el siguiente comando.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl x509 -in tiraquelibras.crt -text -noout<\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Verificar_un_certificado_cer\"><\/span>Verificar un certificado (.cer)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nos valdr\u00eda con el comando que verifica el formato <em><strong>.crt<\/strong><\/em>\u00a0pero en ocasiones debemos de indicar el formado de codificaci\u00f3n durante la llamada.<\/p>\n<p>Comando sin indicar el formado:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl x509 -in tiraquelibras.cer -text -noout<\/pre>\n<p>Formato <strong><em>pem<\/em><\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl x509 -inform pem -in tiraquelibras.cer -text -noout<\/pre>\n<p>Formato <em><strong>der<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl x509 -inform der -in tiraquelibras.cer -text -noout<\/pre>\n<p>Usamos un comando u otro en funci\u00f3n del si se muestra un error o no tras ser ejecutado.<\/p>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Verificar_un_certificado_en_formato_PKCS12_file_pfx_or_p12\"><\/span>Verificar un certificado en formato\u00a0<strong>PKCS#12 file (.pfx or .p12)<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Si tenemos un certificado en formato pfx o p12 usaremos el siguiente comando.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl pkcs12 -info -in keyStore.p12<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Depurando_con_OpenSSL\"><\/span>Depurando con OpenSSL<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Compatibilidad_entre_llave_privada_key_certificado_crt_y_solicitud_csr\"><\/span>Compatibilidad entre llave privada (.key), certificado (.crt) y solicitud (.csr)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Con el comando <em><strong>md5<\/strong><\/em> de OpenSSL podemos confirmar la compatibilidad entre los tres archivos usados para la creaci\u00f3n del certificado, teniendo que dar como resultado el mismo valor.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl rsa -noout -modulos -in tiraquelibras.key | openssl md5\r\nrsa: Unknown cipher modulos\r\nrsa: Use -help for summary.\r\n(stdin)= d41d8cd98f00b204e9800998ecf8427e\r\n\r\nopenssl req -noout -modulos -in CSR2.csr | openssl md5\r\nreq: Unknown digest modulos\r\nreq: Use -help for summary.\r\n(stdin)= d41d8cd98f00b204e9800998ecf8427e<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"Verificacion_de_host_remoto\"><\/span>Verificaci\u00f3n de host remoto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Con el comando <em><strong>s_client<\/strong><\/em> de OpenSSL podemos consultar de forma remota el estado de un certificado aplicado a un host o URL concreto. Este comando admite multitud de opciones, pero solo voy a mostrar un par de casos concretos.<\/p>\n<p>Comando b\u00e1sico:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl s_client -showcerts -connect tiraquelibras.com:443<\/pre>\n<p>Consultar solo fecha de inicio y fin:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">echo | openssl s_client  -connect tiraquelibras.com:443 2&gt;\/dev\/null | openssl x509 -noout -dates\r\nnotBefore=Aug  3 00:00:00 2017 GMT\r\nnotAfter=Aug  3 23:59:59 2018 GMT<\/pre>\n<p>En <a href=\"https:\/\/google.es\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\"><em><strong>Google<\/strong> <\/em><\/a>hay multitud de enlaces para consultar las opciones del comando <a href=\"https:\/\/www.google.com\/search?q=openssl+s_client&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\"><em><strong>openssl s_client<\/strong><\/em><\/a>.<\/p>\n<hr \/>\n<h1 style=\"text-align: center;\"><span class=\"ez-toc-section\" id=\"Conversion_a_otros_formatos\"><\/span>Conversi\u00f3n a otros formatos<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"De_archivo_DER_crt_cer_der_a_PEM\"><\/span>De archivo DER (.crt .cer .der) a PEM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl x509 -inform der -in tiraquelibras.cer -out tiraquelibras.pem<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"De_archivo_PEM_a_DER\"><\/span>De archivo PEM a DER<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl x509 -outform der -in tiraquelibras.pem -out tiraquelibras.der<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"De_archivo_PKCS12_file_pfx_p12_conteniendo_una_llave_privada_y_un_certificado_a_PEM\"><\/span>De archivo\u00a0PKCS#12 file (.pfx .p12) conteniendo una llave privada y un certificado a PEM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes<\/pre>\n<h3><\/h3>\n<h3><span class=\"ez-toc-section\" id=\"De_archivo_PEM_y_llave_privada_a_PKCS12_pfx_p12\"><\/span>De archivo PEM y llave privada a PKCS#12 (.pfx .p12)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">openssl pkcs12 -export -out tiraquelibras.pfx -inkey tiraquelibras.key -in tiraquelibras.crt -certfile CACert.crt<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusi\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Con estos comandos tenemos m\u00e1s que suficiente para poder trabajar con nuestros certificados SSL. Espero que sean de utilidad para todo el mundo que haya le\u00eddo esta entrada del blog.<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Enlaces_de_interes\"><\/span>Enlaces de inter\u00e9s<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Algunos enlaces de inter\u00e9s sobre estos comandos:<\/p>\n<p>Comandos m\u00e1s habituales pincha <a href=\"https:\/\/www.sslshopper.com\/article-most-common-openssl-commands.html\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">aqu\u00ed<\/a>.<\/p>\n<p>Comandos m\u00e1s habituales 2 pincha <a href=\"https:\/\/soporte.itlinux.cl\/hc\/es\/articles\/202497479-Comando-%C3%BAtiles-de-OpenSSL\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\">aqu\u00ed<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta entrada se explicar\u00e1n los comandos b\u00e1sicos para la generaci\u00f3n de certificados digitales con OpenSSL, tanto para comunicaciones digitales como para servicios. Hay que<span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/blog.tiraquelibras.com\/?p=135\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":141,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[23,24,25],"class_list":["post-135","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sistemas","tag-certificados","tag-https","tag-ssl"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=135"}],"version-history":[{"count":0,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/135\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/media\/141"}],"wp:attachment":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}