我收到了一家公司的 PFX 文件,以便使用他们的 VPN。对于 openfortivpn,我需要两个 PEM 文件来传递--user-cert=cert.pem --user-key=key.pem
,所以我使用openssl pkcs12 -in REDACTED.pfx -nocerts -out key.pem -nodes
和openssl 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 文件作为输入时),从而满足更高的安全要求。如果这是正确的方法,那么需要哪些命令?