从 PFX 文件中提取的私钥被 Winscp 或 Filezilla 等 SFTP 工具拒绝

从 PFX 文件中提取的私钥被 Winscp 或 Filezilla 等 SFTP 工具拒绝

长话短说 - 我正在尝试从用于 SFTP 身份验证的 PFX 文件中提取私钥文件。我可以生成私钥文件,但 WinSCP 或 FileZilla 等 SFTP 工具不接受它

方法 1:

  1. OpenSSL 的最新版本
  2. 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:

  1. OPEN SSL 降级版本 - 1.1.1f
  2. 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。

相关内容