User Tools

Site Tools


comandos_openssl_utiles_para_certificados

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
comandos_openssl_utiles_para_certificados [2021/05/01 21:10] busindrecomandos_openssl_utiles_para_certificados [2023/07/12 15:38] (current) busindre
Line 6: Line 6:
  
 <code text>Signature Algorithm: sha512WithRSAEncryption</code> <code text>Signature Algorithm: sha512WithRSAEncryption</code>
 +
 +**RSA vs EC**
 +
 +Se recomienda el uso de EC en vez de RSA cuando sea posible. 
 +
 +<code bash># Listar las curvas disponibles
 +openssl ecparam -list_curves
 +
 +# Generación de una llave privada EC.
 +openssl ecparam -name prime256v1 -genkey -noout -out private-key.pem
 +# Generación de una llave privada EC cifrada (Pidiendo el password por el promt y algoritmo de cifrado AES256).
 +openssl genpkey -out private-key.pem -outform PEM -aes256 -algorithm ec -pkeyopt ec_paramgen_curve:prime256v1
 +# Generación de una llave privada EC cifrada (Indicando como parámetro la password XXXXX y algoritmo de cifrado AES256).
 +openssl genpkey -out private-key.pem -outform PEM -pass pass:XXXXX -aes256 -algorithm ec -pkeyopt ec_paramgen_curve:prime256v1
 +
 +# Generación de una llave pública EC.
 +openssl ec -in private-key.pem -pubout -out public-key.pem</code>
 +
 +Casi todos los comandos funcionan tanto con llaves RSA como  con llaves EC, simplemente hay que estar atento a los parámetros en uso.
 +<code bash># RSA
 +-newkey rsa:4096
 +# EC
 +-newkey ec -pkeyopt ec_paramgen_curve:sect571r1</code>
  
 **Comandos generales** (Generar CSRs, Certificados, llaves privadas, etc). **Comandos generales** (Generar CSRs, Certificados, llaves privadas, etc).
  
 Generar llave privada + Certificate Signing Request. Generar llave privada + Certificate Signing Request.
-<code bash>openssl req -sha512 -out CSR.csr -new -newkey rsa:4096 -nodes -keyout privateKey.key</code>+<code bash># RSA 
 +openssl req -sha512 -out CSR.csr -new -newkey rsa:4096 -nodes -keyout privateKey.key 
 +# EC (Consultar qué tipo de curva se va a suar mediante openssl ecparam -list_curves) 
 +openssl req -sha512 -out CSR.csr -new -newkey ec -pkeyopt ec_paramgen_curve:sect571r1  -nodes -keyout privateKey.key 
 +</code>
  
 Generar certificado autofirmado. (SHA-512 / RSA 4096). Generar certificado autofirmado. (SHA-512 / RSA 4096).
-<code bash>openssl req -x509 -nodes -sha512 -days 365 -newkey rsa:4096 -keyout privateKey.key -out certificate.crt</code>+<code bash> # RSA 
 +openssl req -x509 -nodes -sha512 -days 365 -newkey rsa:4096 -keyout privateKey.key -out certificate.crt 
 +# EC 
 +openssl req -x509 -nodes -sha512 -days 365 -newkey ec -pkeyopt ec_paramgen_curve:sect571r1 -keyout privateKey.key -out certificate.crt 
 +</code>
  
 Generar certificado autofirmado a partir de una llave privada existente. (SHA-512) Generar certificado autofirmado a partir de una llave privada existente. (SHA-512)
Line 22: Line 53:
  
 Generar una solicitud de certificado csr (Certificate Signing Request) a partir de un certificado existente. Generar una solicitud de certificado csr (Certificate Signing Request) a partir de un certificado existente.
-<code bash>openssl x509 -sha512 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key</code>+<code bash>openssl x509 -sha512 -x509toreq -x509toreq -copy_extensions -in certificate.crt -out CSR.csr -signkey privateKey.key</code>
  
-Generar certificado autofirmado con SAN. (SHA-512 / RSA 4096).+Generar certificado autofirmado con SAN. (SHA-512 / RSA 4096 o EC).
  
 <code bash># Para crear un certificado para múltiples dominios, es decir, no solo basado en CN, debe crearse un fichero CSR primeramente con la información pertinente. <code bash># Para crear un certificado para múltiples dominios, es decir, no solo basado en CN, debe crearse un fichero CSR primeramente con la información pertinente.
Line 53: Line 84:
 ### Generar el certificado autofirmado basado en la configuración anterior definida en req.cnf. ### Generar el certificado autofirmado basado en la configuración anterior definida en req.cnf.
  
-openssl req -x509 -nodes -sha512 -days 365 -newkey rsa:4096 -keyout privateKey.key -out certificate.crt -config req.cnf -extensions 'v3_req'</code>+# RSA 
 +openssl req -x509 -nodes -sha512 -days 365 -newkey rsa:4096 -keyout privateKey.key -out certificate.crt -config req.cnf -extensions 'v3_req' 
 +# EC (Depende del cliente / navegador que conecte con el certificado, la curva debe elegirse acorde a la compatibilidad, actualmente 2021 muy pocas están soportadas por los navegadores) 
 +openssl req -x509 -nodes -sha512 -days 365 -newkey ec -pkeyopt ec_paramgen_curve:sect571r1 -keyout privateKey.key -out certificate.crt -config req.cnf -extensions 'v3_req' 
 + 
 +# Mensaje de Curl al acceder a un certificado https que usa EC. 
 +# curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure 
 +</code>
  
  
 Eliminar contraseña (passphrase) de cifrado de una llave privada openssl. (Si se usa el mismo nombre se sobreescribe). Eliminar contraseña (passphrase) de cifrado de una llave privada openssl. (Si se usa el mismo nombre se sobreescribe).
-<code bash>openssl rsa -in privateKey.pem -out newPrivateKey.pem</code>+<code bash># RSA 
 +openssl rsa -in privateKey.pem -out newPrivateKey.pem 
 +# ECC 
 +openssl ec -in privateKey.pem -out newPrivateKey.pem 
 +</code>
  
 Cifrar llave privada con contraseña (passphrase). (Si se usa el mismo nombre se sobreescribe). Cifrar llave privada con contraseña (passphrase). (Si se usa el mismo nombre se sobreescribe).
-<code bash>openssl rsa -des -in privateKey_sin_pwd.key -out privateKey_con_pwd.key</code>+<code bash># RSA 
 +openssl rsa -des -in privateKey_sin_pwd.key -out privateKey_con_pwd.key 
 +# EC 
 +openssl ec -des -in privateKey_sin_pwd.key -out privateKey_con_pwd.key 
 +</code>
  
-Cambiar clave de cifrado de una llave privada (Si se usa el mismo nombre de fichero salida se sobreescribe).+Cambiar clave de cifrado de una llave privada (Si se usa el mismo nombre de fichero salida se sobrescribe).
 <code bash>openssl rsa -des -in privateKey.key -out privateKey_new_pwd.key</code> <code bash>openssl rsa -des -in privateKey.key -out privateKey_new_pwd.key</code>
  
Line 73: Line 119:
  
 Revisar / Mostrar información de una llave privada. Revisar / Mostrar información de una llave privada.
-<code bash>openssl rsa -in privateKey.key -check</code>+<code bash> # RSA 
 +openssl rsa -in privateKey.key -check 
 +# EC 
 +openssl ec -in privateKey.key -check 
 +</code>
  
 Revisar / Mostrar información de un certificado X509 en formatos: PEM / DER / NET. Revisar / Mostrar información de un certificado X509 en formatos: PEM / DER / NET.
Line 194: Line 244:
 **Comandos de debug de OpenSSL**. **Comandos de debug de OpenSSL**.
  
-Comprobar si un certificado o solicitud de certificado se corresponde con una determinada llave privada.+Comprobar si un certificado o solicitud de certificado se corresponde con una determinada llave privada (RSA).
  
 <code bash>openssl x509 -noout -modulus -in certificate.crt | openssl md5 <code bash>openssl x509 -noout -modulus -in certificate.crt | openssl md5
Line 212: Line 262:
  
 Convertir llaves DER (.crt .cer .der) al estandar PEM y viceversa. Convertir llaves DER (.crt .cer .der) al estandar PEM y viceversa.
-<code bash>openssl rsa -inform der -in certificate.cer -out certificate.pem +<code bash># RSA 
-openssl rsa -outform der -in certificate.pem -out certificate.der</code>+openssl rsa -inform der -in certificate.cer -out certificate.pem 
 +openssl rsa -outform der -in certificate.pem -out certificate.der 
 + 
 +# EC PEM to DER 
 +openssl ec -in certificate.der -inform DER -outform PEM -out certificate.pem 
 +openssl ec -in certificate.pem -inform PEM -outform DER -out certificate.der 
 +</code>
  
 Convertir ficheros PKCS#12 (.pfx .p12) con llave privada y certificado a PEM. Convertir ficheros PKCS#12 (.pfx .p12) con llave privada y certificado a PEM.
Line 261: Line 317:
  
 Obtener el "SPKI fingerprint" (Base64) a partir de una clave privada. Obtener el "SPKI fingerprint" (Base64) a partir de una clave privada.
-<code>openssl rsa -in file.key -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -base64</code>+<code># RSA 
 +openssl rsa -in file.key -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -base64 
 +# EC 
 +openssl ec -in file.key -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -base64 
 +</code>
  
 Obtener el "SPKI fingerprint" (Base64) a partir de un csr (certificate signing request). Obtener el "SPKI fingerprint" (Base64) a partir de un csr (certificate signing request).
Line 267: Line 327:
  
 Obtener el "SPKI fingerprint" (Base64) a partir de un certificado. Obtener el "SPKI fingerprint" (Base64) a partir de un certificado.
-<code>openssl x509 -in file.crt -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64</code>+<code># RSA 
 +openssl x509 -in file.crt -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 
 +# EC 
 +openssl x509 -in file.crt -pubkey -noout | openssl ec -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 
 +</code>
  
 Obtener el "SPKI fingerprint" (Base64) de un servidor HTTPS. Obtener el "SPKI fingerprint" (Base64) de un servidor HTTPS.
-<code>openssl s_client -servername www.busindre.com -connect www.busindre.com:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64</code>+<code># RSA 
 +openssl s_client -servername www.busindre.com -connect www.busindre.com:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 
 +# EC 
 +openssl s_client -servername www.busindre.com -connect www.busindre.com:443 | openssl x509 -pubkey -noout | openssl ec -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 
 +</code>
  
 **Crear CSR / Firmar CSR multidominio** (SAN): [[crear_y_firmar_csrs_multidominio_san]] **Crear CSR / Firmar CSR multidominio** (SAN): [[crear_y_firmar_csrs_multidominio_san]]
comandos_openssl_utiles_para_certificados.1619896259.txt.gz · Last modified: 2021/05/01 21:10 by busindre