Intento con el módulo crypto nodejs . Pero no logro que funcione.
import * as crypto from 'crypto'; import { RsaPrivateKey } from 'crypto'; const privateKey = crypto.privateDecrypt(rsaPrivateKey, Buffer.from('')).toString();Tengo una frase de contraseña. Necesito hacer esto para poder importar mi certificado dentro de AWS. ¿Alguien tiene una idea?
Sé que podemos hacerlo en golang con
if x509.IsEncryptedPEMBlock(block) { der, wrongPass := x509.DecryptPEMBlock(block, []byte(o.passphrase)) -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-256-CBC,XXXXXXXXXEl descifrado es posible fácilmente con el módulo criptográfico de NodeJS utilizando las dos funciones crypto.createPrivateKey() para importar la clave cifrada y keyObject.export() para exportar la clave no cifrada:
crypto = require('crypto'); encryptedPkcs1 = `-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-256-CBC,B2FBBDCE627586CB04423335D9D4EC59 ekUVpHooHO3d5Ao0gTovipGK9DAP0MBXffEvBrtvcNcxhd9vaE6PsIxQPGwxnc/C v9Y5RiClNwgZHtRol+i+QeZYLQHUQdOs3toymUgpIcN19IHyxU4C17PCWLZQpuVy 7hcD150dxkGv6Ai53QHIIl4Zybk6neBSbHpJtCnKjRMc6dNONpmFGqO/9SCmH/Bv lHtPNZ9VsCDI67OO9fMQ3AqfpeGmCwJF8HgXf0nquQH1BJkZsYc4bq/xfGLFII0N odWD1XEnwL4DWQ1r2wH0IvAXyVQUpwUmDeuDeeslQe9S5IERxovlFKIGsJnIrDLu j420LLuiMjvj4Cipl91zZjlypsxCXgP7Ta8SDNNWo6yi0qAk1VbMAaeu2GsI6mn5 IUmGr0mkZsSxGFSc9614z+2aJjXEuX1jZ1q83nnZMTz0zEKu/0B6M5h+2B7kG5W1 -----END RSA PRIVATE KEY-----` encryptedKey = crypto.createPrivateKey({ key: encryptedPkcs1, passphrase: 'myPassword'}) decryptedKey = encryptedKey.export({ format: 'pem', type: 'pkcs1',})Tenga en cuenta que, en la práctica, hoy en día la clave no debe ser inferior a 2048 bits por motivos de seguridad. La clave de 512 bits aquí solo se usa para pruebas.
La salida es:
-----BEGIN RSA PRIVATE KEY----- MIIBPAIBAAJBAL2D8iI9YRKCxsqDrw9WDFddW+xD2FBx383pxiW4el8M2OangbWH FzOf8Y8ZQiw5tfocUqTvMhOcS1gThT5zUusCAwEAAQJBAJjTO0IzPwF/ZjFPKa9z U3ZsOcF4IIsWmUTivMAUWNImFS0XiecmhiOpdgjP4LQ5gkphcC7f9VYS6Xw4suen ZOECIQDp3GtcMdHJzQKn4fDnmTStHeEVDoqvs2tVE/HaWoYhMQIhAM900ZGxJIxK GYrdkGU2ETvvkyRH7JStGlj3dIJDGE7bAiEAiSIFmpRkLm+XJRbqiwRdzT3+JLjY Plt5jvQZGC+JA6ECICzJB0TwfPdcN89mrXlsBqRtv9IhRM2D4SA7q4dDfMfpAiEA s9/2kHpLVmtpEDyw+u4Qrgt6/xUR1B39nceE1bEBo+U= -----END RSA PRIVATE KEY-----