apache VFS2 上的 IIS 证书无法恢复 KEY SSL

问题描述

我正在使用 VFS2 构建一个应用程序,以便通过 IIS 服务器上的 FTPS 进行通信。

出于测试目的,我在 IIS 服务器上创建了一个自签名证书。目前,我可以通过 Winscp 和 FileZilla 进行连接。

然后我从 IIS 导出私钥和证书

  • 右键单击证书
  • 是的,我想导出私钥
  • 设置密码并导出到 PFX 文件

然后

  • 使用 KeyStore explorer 创建了一个全新的 JKS KeyStore 与密钥相同的密码

  • 将密钥导入密钥库 与商店密码相同

现在,当我尝试使用 VFS2 建立 FTPS 连接时,我遇到了一个例外:

UnrecoverableKeyException:无法恢复密钥

正如互联网所说,当密钥库和密钥密码不同时会发生异常。 我已经检查并重新创建了商店和密钥 200 次,密码都一样。

我在整个过程中做错了什么吗?

解决方法

尝试从证书存储中导出证书,而不是从 iis 导出证书:

  1. 运行 mmc.exe
  2. 点击“控制台”菜单,然后点击“添加/删除管理单元”。
  3. 点击“添加”按钮,然后选择“证书”管理单元并点击“添加”。
  4. 选择“计算机帐户”,然后点击“下一步”。
  5. 选择“本地计算机”,然后单击“确定”。
  6. 点击“关闭”,然后点击“确定”。
  7. 展开“证书”菜单,然后点击“个人”文件夹。
  8. 右键单击要导出的证书,然后选择“所有任务”->“导出”。
  9. 将出现一个向导。确保选中包含私钥的框并继续执行此向导,直到您拥有 .PFX 文件。

接下来运行 openssl 来提取私钥和证书文件。

提取私钥:

从 .PFX 文件导出私钥文件。

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

提取证书文件:

从 .PFX 文件导出证书文件。

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

删除密码:

此命令会从私钥中删除密码,因此 Apache 在启动时不会提示您输入密码。

openssl rsa -in key.pem -out server.key

确保您的 apache 虚拟主机配置文件中存在以下几行并且它们是正确的:

SSLEngine on
SSLOptions +StrictRequire
SSLCertificateFile /path/to/certificate/cert.pem
SSLCertificateKeyFile /patch/to/key/server.key

完成所有配置更改后重新启动apache服务器。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...