长话短说 - 我正在尝试从用于 SFTP 身份验证的 PFX 文件中提取私钥文件。我可以生成私钥文件,但 WinSCP 或 FileZilla 等 SFTP 工具不接受它
方法 1:
- OpenSSL 的最新版本
- WinSCP 最新版本
使用 OpenSSL 从 PFX 文件生成私钥的常规命令。但这不起作用
openssl pkcs12 -in C:\sample.pfx -nocerts -nodes -out C:\samplePpk.ppk
我收到这个错误
803F0100: error : 0308010C: digital envelope routines:inner_evp_generic_fetch:unsupported:crypto\evp\evp_fetch.c:349:Global default library context, Algorithm(cbc) Properties ()
根据 Stackoverflow 帖子的建议,我以不同的方式运行上述命令,引用 legacy.dll 文件,如下所示
openssl pkcs12 -in C:\sample.pfx -out C:\sampleOutput.ppk -nodes -nocerts -legacy -provider-path "C:\Program Files\OpenSSL-Win64\bin" -provider default.
这创建了一个 PPK 文件输出。但它的开头是这样的 --BEGIN PRIVATE KEY-- 而不是 --BEGIN RSA PRIVATE KEY--。我尝试使用以下命令将其转换为 RSA 私钥
openssl rsa -in C:\sampleOutput.ppk -out C:\sampleOutputRSA.ppk
但是它仍然使用--BEGIN PRIVATE KEY--生成了相同的私钥。现在,由于该私钥的格式无法识别,因此无法导入到puttyGen或winscp中。
方法 2:
- OPEN SSL 降级版本 - 1.1.1f
- WINSCP 降级版本 - 5.17.3
使用以下命令从 PFX 中提取 PPK
openssl pkcs12 -in C:\sampleOutput.pfx -out C:\sampleOutput.ppk -nodes -nocerts
它创建了一个带有 --BEGIN PRIVATE KEY-- 标头的 PPK 文件。然后使用以下命令将其转换为 RSA 密钥
openssl rsa -in C:\sampleOutput.ppk -out C:\sampleOutputRSA.ppk
并且 PPK 文件是使用 --BEING RSA PRIVATE KEY-- 标头创建的。
在 WINSCP 中使用私钥时,显示密钥需要为 putty 格式。我将 RSA 密钥加载到 PUTTYGEN 并添加密码以将其再次保存为私钥。
导出的私钥现在已被 WINSCP 接受,但未对其进行身份验证,这是它显示的错误。在此处输入图像描述
我想了解我所做的是否正确或者是否有其他方法可以从 PFX 文件中提取 PPK。