Express 可以在没有私钥密码的情况下使用带有加密私钥的 .pfx 文件

Express Can Use .pfx file with encrypted private key without the private key's password

我有一个 express 实例和一个未加密的 pfx,其中包含我的证书和加密的私钥。当我在 express 中加载 pfx 时,我不需要提供任何类型的密码,而且它可以工作。 node.js 实例如何访问私钥? https 工作需要访问未加密的私钥吗?

快递编码:

var httpsOptions = {
    'pfx': fs.readfileSync('./cert.pfx'),
    'passphrase': ''
};

https.createServer(httpsOptions, expressApp).listen(443, 'example.com');

我来自 openSSL 的 .pfx 信息如下所示:

openssl pkcs12 -in cert.pfx -info
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: XXXXXXXXXXXX, Iteration 2048
Certificate bag
Bag Attributes
    localKeyID: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
subject=/OU=Domain Control Validated/CN=*.example.com
issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, 
Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure 
Certificate Authority - G2
-----BEGIN CERTIFICATE-----
XXXXXXXXXXX=
-----END CERTIFICATE-----
PKCS7 Data 
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
    localKeyID: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
Key Attributes: <No Attributes>
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,XXXXXXXXXXX

XXXXXXXXXXXXXXXX==
-----END RSA PRIVATE KEY-----

原来 pfx 本身和 pfx 中的私钥都未加密存储。

我误以为 pfx 中的私钥已加密,因为 1.) 有人告诉我它是并且 2.) 并且因为 openSSL 包不会显示原始私钥,除非使用 -nodes 选项

明确告知

当 openssl 像上面那样显示 Enter PEM pass phrase: 时,它是在询问如何加密显示的输出:而不是如何解密存储的密钥,正如我最初想的那样

我在上面寻找的正确命令是

openssl pkcs12 -in cert.pfx -info -nodes