从java.net下载OpenJDK12遇证书匹配问题求助
解决wget下载OpenJDK 12时的证书不匹配问题
我之前也碰到过一模一样的情况!当时用wget拉取OpenJDK 12安装包时,突然弹出证书所有者和download.java.net不匹配的错误,查了半天发现是Oracle那边CDN的证书配置出了小问题,给你几个实用的解决办法:
1. 临时绕过证书检查(紧急下载用)
如果只是想先把文件下下来,可以给wget加个跳过证书验证的参数,命令如下:
wget --no-check-certificate https://download.java.net/java/GA/jdk12.0.1/69cfe15208a647278a19ef0990eea691/12/GPL/openjdk-12.0.1_linux-x64_bin.tar.gz
⚠️ 注意:这个方法会跳过证书校验,有一定安全风险,下载完成后一定要校验文件的哈希值(可以去OpenJDK官方发布页找对应版本的哈希值比对)。
2. 刷新本地DNS缓存
有时候是DNS解析到了配置错误的旧节点,刷新缓存后就能连到正确的服务器:
- 用systemd的Linux系统:
sudo systemd-resolve --flush-caches
- 其他系统可以试试:
sudo /etc/init.d/dns-clean restart
刷新完再重新执行原来的wget命令,大概率能解决问题。
3. 改用curl工具下载
curl同样支持跳过证书检查,命令更简洁:
curl -k -O https://download.java.net/java/GA/jdk12.0.1/69cfe15208a647278a19ef0990eea691/12/GPL/openjdk-12.0.1_linux-x64_bin.tar.gz
其中-k是跳过证书验证,-O表示保留原文件名下载。
4. 手动导入正确证书(安全持久方案)
如果不想跳过验证,想彻底解决这个问题,可以手动获取并导入download.java.net的正确证书:
- 先获取服务器证书:
openssl s_client -connect download.java.net:443 -showcerts
- 在输出里找到属于
download.java.net的证书块(从-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----),把这段内容保存到文件download-java-net.crt中。 - 导入到系统信任证书库:
sudo cp download-java-net.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
之后再用wget下载就不会出现证书不匹配的错误了。
当时这个问题在社区里挺多人反馈的,主要是Oracle那边的CDN节点证书配置问题,后来虽然修复了,但偶尔还是会因为DNS缓存的原因碰到。
内容的提问来源于stack exchange,提问作者Gerald
相关产品推荐
相关产品推荐

