我正在构建一个应用程序,使用VFS2通过IIS服务器上的FTPS进行通信。
为了测试的目的,我在IIS服务器上创建了一个自签名证书。现在,我可以通过Winscp和FileZilla连接。然后从IIS中导出私钥和证书
- 右键单击证书
- 是我想导出私钥
- 设置密码并导出为PFX文件 然后
使用KeyStore资源管理器创建了一个全新的JKS KeyStore与密钥相同的密码.
将密钥导入到keystore中与存储相同的密码
现在,与VFS2当我试图使FTPS连接,我有一个例外:
UnrecoverableKeyException: Cannot recover key
就像互联网上说的,当密钥库和密钥密码不相同时,会出现一个例外。我已经检查并重新创建了200次存储和密钥,密码是一样的。
在整个过程中我做错了什么吗?
不要从iis中导出证书,请尝试从证书存储中导出证书:
- 运行mmc.exe
- 点击"控制台"菜单,然后点击"添加/删除管理单元"。
- 点击"添加"按钮,然后选择"证书"管理单元,点击"添加"。
- 选择"计算机帐户",然后单击"下一步"。 选择"本地计算机",然后点击"确定"。点击"关闭",然后点击"确定"。
- 展开"证书"菜单,点击"个人"文件夹。
- 右键单击要导出的证书并选择'All tasks' ->"出口"。
- 将出现向导。请确保选中包含私钥的复选框,并继续执行此向导,直到生成。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服务器。