我使用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的原创文章,请关注公众号"汪子熙":

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

  1. MYSQL数据库导入错误提示:/*!40101 SET NAMES utf8mb4 */;解决办法!

    mysql 导入错误 /*!40101 SET NAMES utf8mb4 */; 原因数据库不支持utf8mb4 解决办法,用Notepad++打开要导入的数据库文件,找到: /*!40101 SE ...

  2. 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档

    原文:http://support.microsoft.com/kb/959216#top 您尝试通过使用 IIS 7.0 管理器安装证书时出现错误消息:"找不到与此证书文件相关联的证书申请 ...

  3. CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法...

    CAS (10) -- JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法 jboss版本: jb ...

  4. Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法

    Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法 问题描述 在Ubuntu上使用CP210x USB转UART设备时需要安装驱动程序(CP ...

  5. 超详细消息队列MQ使用时常见问题以及解决办法

    消息队列常见问题的解决办法 会出现问题总结 问题解决 消息队列造成系统可用性降低 系统复杂性增加 消息丢失问题 消息被重复消费 消息积压过多 没有什么问题是加一层解决不了的,如果有,那么久加两层,今天 ...

  6. curl 错误:unable to verify the first certificate 解决办法

    CURL 错误:UNABLE TO VERIFY THE FIRST CERTIFICATE 解决办法 事情是这样的: 我在阿里云申请的免费ssl证书到期了,又重新申请了新的免费证书,部署完毕后浏览器 ...

  7. nltk_data下载错误 Error loading stopwords urlopen error [Errno 11004] 解决办法

    nltk_data下载错误 Error loading stopwords: urlopen error [Errno 11004] 解决办法 [nltk_data] Error loading st ...

  8. 错误: 加载主类 时出现 LinkageError 解决办法

    错误: 加载主类 时出现 LinkageError 解决办法 在导入本地项目,运行的时候,发生了错误: 加载主类 时出现 LinkageError 的错误,搜索了很多种方法,都没有办法解决,后来,自己 ...

  9. Qt 错误: LNK2019: 无法解析的外部符号 原因及解决办法

    Qt 错误: LNK2019: 无法解析的外部符号 原因及解决办法 删除Qt中的一些用不到的函数或者添加一个新的.ui窗口的时候,我遇到了这个LINK2019无法解析的外部符号错误,网上查了半天可算解 ...

最新文章

  1. 网站的高性能架构--应用服务器优化
  2. 基于JAVA+Servlet+JSP+MYSQL的实验室机房预约管理系统
  3. MySQL5.5.27使用Restore From SQL Dump功能导入数据库表中出现Row size too large
  4. 基于SSM的单点登陆01
  5. POJ 2287 田忌赛马 贪心算法
  6. 使用SQL的全文搜索功能构建 Web 搜索应用程序
  7. 2021-09-06LS是交替最小二乘(alternating least squares)的简称,用交替最小二乘求解的一个协同推荐算法。
  8. 平板电脑可以装python吗_电脑上的应用程序可以装在平板电脑上吗
  9. ps保存psd后图层全没了_ps保存成psd格式后,再打开就是一张图片而不显图层,怎么办啊??急!!...
  10. java拼接字符串返回
  11. ubuntu14.04安装skype4.3
  12. 飞凌ok6410一键烧写linux文件,飞凌OK6410-B Linux学习之一刷机过程
  13. java poi 追加_使用POI 向Excel中追加数据
  14. Illustrating How Mechanical Assemblies Work
  15. 2020/2/23如何高效使用Axure绘制原型图
  16. 利用 freemarker 模板生成 word 小结
  17. POJ 1849 Two
  18. 15天共读深度学习Day6
  19. zrender使用问题
  20. ZBar源码分析(五)

热门文章

  1. Java开发和运行环境的搭建(详细教程)
  2. (Python基础)集合操作
  3. linux 小命令1
  4. chrome和safari字体粗细问题
  5. 数据库MySQL/mariadb知识点——函数
  6. js获取浏览器语言(ie、ff、chrome)、contextpath
  7. 在JavaScript函数中使用EL表达式注意的事项
  8. android activity横竖屏切换,Activity重新创建问题解决!
  9. Linux内核ARM构架中原子变量的底层实现研究
  10. 文献记录(part6)--Dynamic Tree Cut in-depth description, tests and applications