comandos_openssl_utiles_para_certificados
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
comandos_openssl_utiles_para_certificados [2021/03/07 01:00] – busindre | comandos_openssl_utiles_para_certificados [2023/07/12 15:38] (current) – busindre | ||
---|---|---|---|
Line 6: | Line 6: | ||
<code text> | <code text> | ||
+ | |||
+ | **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: | ||
+ | # 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: | ||
+ | |||
+ | # Generación de una llave pública EC. | ||
+ | openssl ec -in private-key.pem -pubout -out public-key.pem</ | ||
+ | |||
+ | 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: | ||
**Comandos generales** (Generar CSRs, Certificados, | **Comandos generales** (Generar CSRs, Certificados, | ||
Generar llave privada + Certificate Signing Request. | Generar llave privada + Certificate Signing Request. | ||
- | <code bash> | + | <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: | ||
+ | </ | ||
Generar certificado autofirmado. (SHA-512 / RSA 4096). | Generar certificado autofirmado. (SHA-512 / RSA 4096). | ||
- | <code bash> | + | <code bash> |
+ | 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: | ||
+ | </ | ||
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> | + | <code bash> |
+ | |||
+ | 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. | ||
+ | |||
+ | ### Fichero req.cnf | ||
+ | |||
+ | [req] | ||
+ | distinguished_name = req_distinguished_name | ||
+ | x509_extensions = v3_req | ||
+ | prompt = no | ||
+ | [req_distinguished_name] | ||
+ | C = ES | ||
+ | ST = Bayern | ||
+ | L = Munich | ||
+ | O = Inventos | ||
+ | OU = IT | ||
+ | CN = www.dominio.com | ||
+ | [v3_req] | ||
+ | keyUsage = keyEncipherment, | ||
+ | extendedKeyUsage = serverAuth | ||
+ | subjectAltName = @alt_names | ||
+ | [alt_names] | ||
+ | DNS.1 = www.dominio.com | ||
+ | DNS.2 = www2.dominio.com | ||
+ | DNS.3 = portainer.dominio.com | ||
+ | DNS.4 = traefik.cominio.com | ||
+ | |||
+ | ### Generar el certificado autofirmado basado en la configuración anterior definida en req.cnf. | ||
+ | |||
+ | # RSA | ||
+ | openssl req -x509 -nodes -sha512 -days 365 -newkey rsa:4096 -keyout privateKey.key -out certificate.crt -config req.cnf -extensions ' | ||
+ | # EC (Depende del cliente / navegador que conecte con el certificado, | ||
+ | openssl req -x509 -nodes -sha512 -days 365 -newkey ec -pkeyopt ec_paramgen_curve: | ||
+ | |||
+ | # Mensaje de Curl al acceder a un certificado https que usa EC. | ||
+ | # curl: (35) error: | ||
+ | </ | ||
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> | + | <code bash># RSA |
+ | openssl rsa -in privateKey.pem -out newPrivateKey.pem | ||
+ | # ECC | ||
+ | openssl ec -in privateKey.pem -out newPrivateKey.pem | ||
+ | </ | ||
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> | + | <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 | ||
+ | </ | ||
- | 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> | <code bash> | ||
Line 41: | Line 119: | ||
Revisar / Mostrar información de una llave privada. | Revisar / Mostrar información de una llave privada. | ||
- | <code bash> | + | <code bash> |
+ | openssl rsa -in privateKey.key -check | ||
+ | # EC | ||
+ | openssl ec -in privateKey.key -check | ||
+ | </ | ||
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 162: | 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 |
<code bash> | <code bash> | ||
Line 180: | 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> | + | <code bash># RSA |
- | openssl rsa -outform der -in certificate.pem -out certificate.der</ | + | 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 | ||
+ | </ | ||
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 229: | Line 317: | ||
Obtener el "SPKI fingerprint" | Obtener el "SPKI fingerprint" | ||
- | < | + | < |
+ | 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 | ||
+ | </ | ||
Obtener el "SPKI fingerprint" | Obtener el "SPKI fingerprint" | ||
Line 235: | Line 327: | ||
Obtener el "SPKI fingerprint" | Obtener el "SPKI fingerprint" | ||
- | < | + | < |
+ | 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 | ||
+ | </ | ||
Obtener el "SPKI fingerprint" | Obtener el "SPKI fingerprint" | ||
- | < | + | < |
+ | openssl s_client -servername www.busindre.com -connect www.busindre.com: | ||
+ | # EC | ||
+ | openssl s_client -servername www.busindre.com -connect www.busindre.com: | ||
+ | </ | ||
**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.1615075210.txt.gz · Last modified: 2021/03/07 01:00 by busindre