IntelliJ 2020.3构建Gradle Spring Boot项目报SSL握手终止错误
该报错出现在MacOS 11.4 BigSur系统下,使用IntelliJ IDEA 2020.3构建Gradle 6.4.1 + Java 11的Spring Boot项目时,报错截图如下:
可落地解决步骤
强制指定JDK TLS协议版本为1.2
在项目根目录的gradle.properties文件(如果不存在则手动创建)中添加如下配置,也可写入用户目录下~/.gradle/gradle.properties全局生效:systemProp.jdk.tls.client.protocols=TLSv1.2 systemProp.https.protocols=TLSv1.2检查Gradle使用的JVM配置
打开IntelliJ的Preferences > Build, Execution, Deployment > Build Tools > Gradle,确认Gradle JVM选项选择的是你本地安装的Java 11,而非IDE自带的JetBrains Runtime(JBR),JBR的默认信任证书库可能与系统不同步,容易出现SSL校验失败问题。导入缺失的根证书到JDK信任库
如果是在公司内网环境,网络设备会做SSL流量审计替换证书,需要将公司的根证书导入到所用JDK的信任库中,执行命令如下:keytool -importcert -file 你的根证书路径.cer -alias 自定义证书别名 -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit
执行时按提示输入yes确认导入即可,导入后重启IntelliJ重新构建。替换为国内镜像源
首先修改项目根目录下gradle/wrapper/gradle-wrapper.properties中的distributionUrl,替换为阿里云的Gradle镜像地址:distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-6.4.1-bin.zip再修改项目的
build.gradle或settings.gradle,将依赖仓库替换为阿里云公共镜像:repositories { maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral() }检查代理配置
如果系统开启了代理,需要在gradle.properties中同步配置代理规则,避免SSL握手被代理拦截:systemProp.https.proxyHost=你的代理地址 systemProp.https.proxyPort=你的代理端口 # 不需要走代理的地址 systemProp.http.nonProxyHosts=localhost|127.0.0.1|*.aliyun.com
内容的提问来源于stack exchange,提问作者Sumit Arora

