You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java通过OAuth连接Sharepoint时出现SSL相关异常如何解决?

解决方案

该报错的核心原因是Java 1.8.0_261版本内置的TLS 1.3协议实现存在兼容性缺陷,微软login.microsoftonline.com端点现已默认启用TLS 1.3协商,旧版本JDK的TLS主密钥生成器参数不匹配导致异常抛出,可通过以下三种方案解决:

方案1:升级JDK版本

直接升级Java 8到1.8.0_301及以上的更新版本,该版本已官方修复TLS 1.3参数初始化的bug,升级后无需修改任何业务代码即可正常发起请求(优先推荐)。

方案2:强制指定TLS 1.2版本(无需升级JDK)

如果暂时无法升级JDK,可通过配置强制禁用TLS 1.3协商,仅使用TLS 1.2发起请求:

Spring Boot全局配置

在application.properties或application.yml中添加如下配置:

# 全局指定HTTPS使用TLS 1.2版本
server.ssl.enabled-protocols=TLSv1.2
spring.httpclient.ssl.enabled-protocols=TLSv1.2

自定义HTTP客户端配置

如果使用自定义的HttpClient实例,可手动指定支持的TLS版本:

import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import javax.net.ssl.SSLContext;

// 初始化仅支持TLS 1.2的SSL上下文
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, new java.security.SecureRandom());
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(
    sslContext,
    new String[]{"TLSv1.2"},
    null,
    SSLConnectionSocketFactory.getDefaultHostnameVerifier()
);
CloseableHttpClient httpClient = HttpClients.custom()
    .setSSLSocketFactory(sslSocketFactory)
    .build();

方案3:修改JDK全局安全配置

找到JDK安装目录下的jre/lib/security/java.security文件,修改以下配置项:

  • 找到jdk.tls.disabledAlgorithms配置,将TLSv1.3添加到禁用列表中,强制该JDK下所有Java应用默认不使用TLS 1.3协议
  • 配置修改完成后重启应用即可生效

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:18:03