近日服务器开始启动全线 HTTPS 加密。
采用了 Let's Encrypt 的证书,根证书是 DST Root CA X3 。
我的 Android 程序大多是用 Java 8 编译的,默认就信任这个根证书
然后这两天改一个之前写的 Java 程序,然后发现 JDK7 并不信任 DST Root CA X3
此程序界面是 Swing 的,原开发基于 JDK7 ,升级到 JDK8 , Swing 的 Error 满天飞,只得放弃升级。
通信部分采用 Apache HttpClient , 我知道 HC 是可以在链接时指定服务器证书,添加证书信任的,但是 Let's Encrypt 的证书只给 3 个月有效期,而且内部通信有大量不同的域名不同的证书。总不能一个证书到期就重新编译一次程序,或者更新一次证书吧。
所以我想有没有办法在 Runtime 阶段,添加一个指定 CA 的信任?毕竟 CA 证书有效期长且不变。随便 google 了一下,都是提前在客户端 jre 用命令行维护本地 keystore ,把 CA 加入本地 keystore ,这种对白痴用户太麻烦了。
采用了 Let's Encrypt 的证书,根证书是 DST Root CA X3 。
我的 Android 程序大多是用 Java 8 编译的,默认就信任这个根证书
然后这两天改一个之前写的 Java 程序,然后发现 JDK7 并不信任 DST Root CA X3
此程序界面是 Swing 的,原开发基于 JDK7 ,升级到 JDK8 , Swing 的 Error 满天飞,只得放弃升级。
通信部分采用 Apache HttpClient , 我知道 HC 是可以在链接时指定服务器证书,添加证书信任的,但是 Let's Encrypt 的证书只给 3 个月有效期,而且内部通信有大量不同的域名不同的证书。总不能一个证书到期就重新编译一次程序,或者更新一次证书吧。
所以我想有没有办法在 Runtime 阶段,添加一个指定 CA 的信任?毕竟 CA 证书有效期长且不变。随便 google 了一下,都是提前在客户端 jre 用命令行维护本地 keystore ,把 CA 加入本地 keystore ,这种对白痴用户太麻烦了。