Java 解决远程调用 ssl 证书认证问题
- 方法 1
- 方法 2
- 方法 3
方法 1
在 jdk 目录导入证书。
首先要下载 服务器 ssl 证书,下载完成之后。把它命名成 Root.cer
后面使用 cmd 命令行 在 jdk 目录导入。
例如 :
jdk 的目录为:D:\JetBranins\Intellij IDEA Community 2023.2.5\jre64\lib\security\cacerts
证书文件的路径为:D:/Root.cer
打开 cmd , 按照自己的文件所在的目录进行导入命令执行
keytool -importcert -trustcacertsa -noprompt -file D:/Root.cer -keystore "D:\JetBranins\Intellij IDEA Community 2023.2.5\jre64\lib\security\cacerts" -alias "root-ca" -storepass changeit
接下来会有提示,输入 yes 即可。
最后重启一下电脑。
还是不行的话,就检查 idea 的配置。
Java Compiler 及 Project Structure 下 jdk 的版本是否正确和你目录对应上。
方法 2
假如你的项目是 spring boot ,远程调用是 feign 组件的话,可以通过修改配置文件来跳过 ssl 证书校验。
yaml 文件中加入:
feign:httpclient:enabled: truedisableSslValidation: true
方法 3
假如你的项目是 spring boot ,可以加入 跳过证书的 java 文件,其实就是创建一个 bean 对象。
注意:需要把该文件放在 springboot 能扫描到的目录。
@Bean
public Boolean disablesSLvalidation() throws Exception {final SSLContext sslcontext = SSLContext.getInstance("TLS");sslcontext.init(null, new TrustManager[]{new X509TrustManager(){@Overridepublic void checkclientTrusted(X509Certificate[]x509Certificates, string s){}@Overridepublic void checkserverTrusted(X509Certificate[]x509certificates, string s){}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}}}, null);HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {public boolean verify(String hqstname, SLLSession session) {return true;}});return true;
}
详细文件下载地址:https://download.csdn.net/download/qq_44538738/88655466