JDK安全证书的一个错误消息 No subject alternative names present的解决办法

我使用Java消费某网站一个Restful API时,遇到这个错误:

21:31:16.383 [main] DEBUG org.springframework.web.client.RestTemplate - Created GET request for "https://127.0.0.1:5031/commerce/product"
21:31:16.388 [main] DEBUG org.springframework.web.client.RestTemplate - Setting request Accept header to [text/plain, application/json, application/+json, /*]
Exception in thread "main" org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://127.0.0.1:5031/commerce/product": java.security.cert.CertificateException: No subject alternative names present; nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:673)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:620)
at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:319)
at com.sap.prolikeService.service.impl.CommerceProductService.getProductDetailByID(CommerceProductService.java:23)
at com.sap.prolikeService.sandbox.SandboxTest.getProductDetailTest(SandboxTest.java:45)
at com.sap.prolikeService.sandbox.SandboxTest.main(SandboxTest.java:49)
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1506)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:78)
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:659)
... 5 more
Caused by: java.security.cert.CertificateException: No subject alternative names present
at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:144)
at sun.security.util.HostnameChecker.match(HostnameChecker.java:93)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:200)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1488)
... 19 more

错误的核心就一句:No subject alternative names present

解决方案:重新生成证书,将缺失的IP地址包含在证书的extension部分即可。命令行如下:

keytool -genkey -alias tomcat2 -keyalg RSA -keystore ./jerry2.keystore -ext SAN=dns:test.abc.com,ip:127.0.0.1

证书生成后,在Subject Alternative names区域能看到IP地址:

之后原始的错误就消失了:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

原文地址:https://www.cnblogs.com/sap-jerry/p/12038079.html

时间: 2024-08-23 03:56:40

JDK安全证书的一个错误消息 No subject alternative names present的解决办法的相关文章

bartender 9.4 错误消息6670 无法链接到数据库的解决办法

操作环境:windows xp/win7/win8/win10bartender9.4excel表格做数据库 情况一: 外部表不是预计的格式: 原因:bartender与2007格式的excel兼容性不是那么好:解决:作为数据库的表格,打开后另存为2003格式就可以了: 情况二: 不是有效路径: 原因:文件移动/改名导致路径变更:解决:重新连接一次数据库文件即可: 打开标签/吊牌打印模板,点击数据库设置: 删除旧的关联记录 添加新的关联记录,点击下一步: 选择第二个 excel,下一步 浏览选择

cvs提交错误:'Committing resources' has encountered a problem 解决办法-------程序员没有解决不了的错误

利用cvs提交项目时项目提交是一个空文件夹,报错如下: 删除这个项目分享是,报错: 原因:这是文件系统不同步的问题,是因为在eclipse或mycelipse之外对工程中的resource进行修改引起的(或者是由不同的系统间对文件进行修改引起的): 解决办法:上传前和更新前都刷新一下工程,右键项目名---->Refresh 这个问题拖了几天没有得到解决,本来以为没有办法解决了 ,看来程序员是没有解决不了的问题啊,哈哈哈  cvs提交错误:'Committing resources' has

Web Form要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。

缩进相同的一组语句构成一个代码块,称之为代码组:代码组首行以关键字开始,以冒号":"结束,该行之后的一行或多行构成代码组! 模块结构和布局:这里有一个__doc__文档属性,可以访问模块,或者函数的说明文档 1.起始行 2.模块文档 3.模块导入 4.变量定义 5.类定义 6.函数定义 7.主程序 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #/usr/bin/env python    #1.Startup line &q

(转)要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。

要“jquery”ScriptResourceMapping.请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping.”的解决办法. 1.先将aspnet.scriptmanager.jquery.dl   (    C:\Program Files\Microsoft Web Tools\Packages\AspNet.ScriptManager.jQuery.1.7.1\lib\net45  )   复制到bin  (网站根目录下的bin文件夹找不到,看看

vs错误【C1083 C1854 C4727】的若干解决办法(对预编译文件头的解释)

这几天写程序,无意间把编译中间文件给删了,然后就出现了C1083编译错误. xxx.cpp ..\commen\xxx.cpp(2) : fatal error C1083: 无法打开预编译头文件:“Release\xxx.pch”: No such file or directory 在网上搜索了很久,大致是这么解决的,将[创建/使用编译头]改为“不使用编译头”,或者改成 “创建预编译头(/Yc)”, 然后编译就通过了. 于是我也招搬了 “不使用编译头” ,结果出现下面的错误: xxx.cpp

asp.net C# 未能加载文件或程序集或它的某一个依赖项。需要强名称程序集。的解决办法

出现这个错误是原因:是有签名的DLL引用了无签名的DLL 如上图所示,就是因为引用Entity.MVCEntity.DLL的项目没有生成这个DLL的项目的签名*.snk 解决办法: 就是清空引用的项目的签名,这样大家都无签名,或者在引用的项目中生成一个签名,这样大家都有签名. 引用原则:有签名可以引用无签名或有签名的DLL.但无签名不可以引用有签名的DLL,会报需要强名称程序集错误.

远程桌面,身份验证错误:要求的函数不正确等解决办法

windows版本10.0.17134,安装最新补丁后无法远程windows server 2008.2013.2016服务器 报错信息如下:出现身份验证错误,要求的函数不受支持  可能是由于CredSSP加密Oracle修正. 微软给出解决方案: https://support.microsoft.com/zh-cn/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018 2018 年 5 月 8 日 将默认设置从"易受攻击&q

安装windwos7 iis 出现错误,并非所有都成功更改的解决办法

1.首先排除网上说的 安装的WIN7是精简版的问题,我这个是旗舰版,以前是正常安装IIS的,后来程序问题我卸载了,就安装不上了 2.网上说的修改什么UAC权限,也是胡扯,因为默认都是最低的 3.排除网上说的非管理员权限,这点知识刚毕业的都知道是不是管理员登陆吧. 最终的解决办法是: 先用命令卸载iis  .net 4.0 第一步:cd  C:\Windows\Microsoft.NET\Framework\v4.0.30319    然后 aspnet_regiis.exe -u 第二步:用正常

VC++编译错误error C2065: “HANDLE”: 未声明的标识符及添加winbase.h后提示winbase.h(243): error C2146: 语法错误: 缺少“;”(在标识符“Internal”的前面)的解决办法

问题描述: VC++程序编译时提示错误:error C2065: "HANDLE": 未声明的标识符等众多错误提示,如下所示: error C2065: "HANDLE": 未声明的标识符 error C2146: 语法错误: 缺少";"(在标识符"hFind"的前面) error C2065: "hFind": 未声明的标识符 error C2065: "INVALID_HANDLE_VALUE