如何以不使用 MD5 的方式转换 PKCS12 密钥?

如何以不使用 MD5 的方式转换 PKCS12 密钥?

我收到了一家公司的 PFX 文件,以便使用他们的 VPN。对于 openfortivpn,我需要两个 PEM 文件来传递--user-cert=cert.pem --user-key=key.pem,所以我使用openssl pkcs12 -in REDACTED.pfx -nocerts -out key.pem -nodesopenssl pkcs12 -in REDACTED.pfx -clcerts -nokeys -out cert.pem来提取它们。它们在我的 VirtualBox VM 上运行良好,安装了 Ubuntu 22.10。然后,我将我的笔记本电脑送去更换 SSD(错误地用比广告中更小的 SSD 出售),回来后我设置了一个 VM,这次使用的是 Ubuntu 22.04(结果证明是必要的),但它不起作用。

命令为sudo openfortivpn REDACTED:11443 -u REDACTED -p REDACTED --trusted-cert REDACTED --user-cert=~/dev/cert.pem --user-key=~/dev/key.pem。其输出为:

WARN:   You should not pass the password on the command line. Type it interactively or use a configuration file instead.
ERROR:  SSL_CTX_use_certificate_chain_file: error:0A080002:SSL routines::system lib
INFO:   Closed connection to gateway.
ERROR:  SSL_CTX_use_certificate_chain_file: error:0A080002:SSL routines::system lib
INFO:   Could not log out.

将安全级别更改openssl.cfn为 1 甚至 0,如这个答案并证实这个,没有帮助。我想这应该由服务器端来完成,但我无法做到。

我是否可以假设最可能的原因是他们同时更改了服务器上 OpenSSL 的默认安全级别?而不是我现在使用的不同(较旧)版本的 Ubuntu?

我该如何解决这个问题?

在我看来,由于 PFX 文件中既有私钥也有公钥,因此我应该能够以任何我想要的格式生成密钥,包括不会使用 MD5 的 PEM 文件(默认情况下,至少当此 PFX 文件作为输入时),从而满足更高的安全要求。如果这是正确的方法,那么需要哪些命令?

相关内容