使用 Apache-Commons-net 添加自签名 SSL 证书
Using Apache-Commons-net to add a self signed SSL certificate
我正在使用 Apache Commons Net FTPSClient 为我的 Web 应用程序构建一个 FTPS 插件。用户可以使用我的应用程序并连接到 his/her FTPS 服务器并将文件拉入我的应用程序,该应用程序对这些文件执行某些功能。
如果用户使用的是自签名证书,我读到 Java 导致的问题可以通过@dave_thompson_085 回答 here 的几种方式解决。我无法更改我的 JRE trustStore,因为我的应用程序托管在我无权访问的服务器上。最后一个选项 - "code your own truststore. Create a java.security.KeyStore and load it with data containing your cert, then create a real javax.net.ssl.TrustManager and .init it with your keystore; then use that TrustManager in your SSLContext."
我不确定我明白这意味着什么。这是否再次涉及更改密钥库并要求 JRE 获取这些更改?
另外,库中是否有明确的方法来添加证书文件?我在哪里添加 Java 的证书文件或首先要验证的库。
您可以使用 keytool 将证书文件添加到 cacerts 文件中。 cacerts 文件与已安装的 JRE 位于同一位置。例如:
C:\Program Files\Java\jdk1.7.0_79\jre\lib\security
Keystore 命令可能类似于:
keytool -import -trustcacerts -alias your_alias -file cert.crt -keystore cacerts
默认密码是"changeit"
要直接回答你的问题,不,你不是通过命令行或密钥工具或类似的东西直接编辑 cacerts 文件。此方法指的是创建 KeyStore 或 JKS 的对象实例,因此 JRE 不会获取您在代码中执行此操作的任何更改,然后使用信任管理器初始化您创建的密钥库以通过 SSL 连接.松散地说,您正在以编程方式覆盖默认密钥库,即 cacerts 文件,以避免彻底更改平面文件。
有明确的方法可以将文件添加到密钥库。
将证书添加到 KeyStore 实例。
您可能想查看 BouncyCastle 的图书馆。它真的非常适合您正在尝试做的事情。甚至可能有点矫枉过正,但真的很棒。
我正在使用 Apache Commons Net FTPSClient 为我的 Web 应用程序构建一个 FTPS 插件。用户可以使用我的应用程序并连接到 his/her FTPS 服务器并将文件拉入我的应用程序,该应用程序对这些文件执行某些功能。 如果用户使用的是自签名证书,我读到 Java 导致的问题可以通过@dave_thompson_085 回答 here 的几种方式解决。我无法更改我的 JRE trustStore,因为我的应用程序托管在我无权访问的服务器上。最后一个选项 - "code your own truststore. Create a java.security.KeyStore and load it with data containing your cert, then create a real javax.net.ssl.TrustManager and .init it with your keystore; then use that TrustManager in your SSLContext." 我不确定我明白这意味着什么。这是否再次涉及更改密钥库并要求 JRE 获取这些更改? 另外,库中是否有明确的方法来添加证书文件?我在哪里添加 Java 的证书文件或首先要验证的库。
您可以使用 keytool 将证书文件添加到 cacerts 文件中。 cacerts 文件与已安装的 JRE 位于同一位置。例如:
C:\Program Files\Java\jdk1.7.0_79\jre\lib\security
Keystore 命令可能类似于:
keytool -import -trustcacerts -alias your_alias -file cert.crt -keystore cacerts
默认密码是"changeit"
要直接回答你的问题,不,你不是通过命令行或密钥工具或类似的东西直接编辑 cacerts 文件。此方法指的是创建 KeyStore 或 JKS 的对象实例,因此 JRE 不会获取您在代码中执行此操作的任何更改,然后使用信任管理器初始化您创建的密钥库以通过 SSL 连接.松散地说,您正在以编程方式覆盖默认密钥库,即 cacerts 文件,以避免彻底更改平面文件。
有明确的方法可以将文件添加到密钥库。
将证书添加到 KeyStore 实例。
您可能想查看 BouncyCastle 的图书馆。它真的非常适合您正在尝试做的事情。甚至可能有点矫枉过正,但真的很棒。