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

SpringBoot邮件应用Windows报SSLHandshakeException,Ubuntu正常求排查

Windows下SpringBoot邮件应用SSL握手异常排查线索
  • 检查JDK证书库的存在与权限
    确认Windows系统中JDK安装目录下的证书库文件路径(通常为C:\Program Files\Java\jdk-17.0.6\lib\security\cacerts),确保文件存在且当前用户有读取权限。

  • 对比跨平台证书库内容
    在Ubuntu和Windows上分别执行以下命令,查看邮件服务器对应的根证书是否在Windows的证书库中:

    # Ubuntu 命令
    keytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit
    # Windows 命令(替换为你的JDK实际路径)
    keytool -list -keystore "C:\Program Files\Java\jdk-17.0.6\lib\security\cacerts" -storepass changeit
    

    搜索邮件服务器的根证书名称(例如使用Gmail时查找GeoTrust Global CA),若Windows侧缺失则需要导入该证书。

  • 手动导入邮件服务器根证书

    1. 获取服务器证书:执行以下命令,将输出中-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----的完整内容保存为smtp-cert.crt文件:
      openssl s_client -connect your-smtp-server:port  # 替换为你的SMTP服务器和端口,如smtp.gmail.com:465
      
    2. 导入证书到JDK证书库:
      keytool -import -alias smtp-server-cert -file smtp-cert.crt -keystore "C:\Program Files\Java\jdk-17.0.6\lib\security\cacerts" -storepass changeit
      
      执行过程中确认信任该证书。
  • 排查自定义证书库配置
    检查SpringBoot应用的配置文件,确认是否设置了spring.mail.properties.mail.smtp.ssl.trust、javax.net.ssl.trustStore等参数:

    • 若指定了自定义trustStore路径,确保Windows下路径格式正确(使用/或转义的\\),且目标文件实际存在。
    • 若配置了mail.smtp.ssl.trust,确认值包含目标邮件服务器域名,而非错误的配置内容。
  • 检查Windows系统根证书存储
    打开Windows控制面板→Internet选项→内容→证书,切换到「受信任的根证书颁发机构」标签,查看是否包含邮件服务器的根证书。若缺失,手动导入该证书到系统存储后重启应用。

  • 临时测试验证证书问题
    为快速确认是否为证书信任导致的问题,可临时添加配置禁用证书校验(仅用于测试,生产环境禁止使用):

    • 在application.properties中添加:
      spring.mail.properties.mail.smtp.ssl.trust=*
      
    • 或启动应用时添加JVM参数:
      -Dmail.smtp.ssl.trust=*
      

    若应用能正常发送邮件,则可确定为证书信任问题,再通过前面的步骤彻底解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:07:14