java.security.cert.CertificateException: No subject alternative names present

embedded/2024/12/22 13:05:42/

需求:
web 升级https时遇到的错误。
先说结论,这个问题是证书的问题。

问题描述

在SSL证书中未找到主题备用名称(Subject Alternative Names,SANs)的信息。SANs用于指定SSL证书可以用于哪些域名(包括主机名、IP地址等),如果SSL证书的SANs字段为空,或者没有包含正在尝试连接的主机名,就会引发这个异常。

解决办法: 重新生成正确的证书

测试环境下,根据自身需求使用OpenSSL生成新的携带正确信息的证书,并且替换就好。生产环境的话,首先联系CA提供方要求,在CA技术支持无法解决的情况下(极低),改代码吧。

  1. **创建一个配置文件(san.cnf) **
[req]
req_extensions = v3_req[v3_req]
subjectAltName = @alt_names[alt_names]
IP.1 = [填写你要用的ip地址]
IP.2 = [your ip 2]
DNS.1 = [填写你要用的域名]
DNS.2 = [your dns 2]
  1. 生成私钥文件(server.key)
openssl genpkey -algorithm RSA -out server.key
  1. 生成证书请求文件(server.csr)
openssl req -new -key server.key -out server.csr -subj "/C=US/ST=State/L=City/O=Organization/CN=example.com" -reqexts v3_req -config san.cnf
  • CN字段是您的域名或主机名。
  • C字段是您的国家缩写。
  • ST字段是您的公司所在省。
  • L字段是您的公司所在市。
  • O字段是您的公司名称。

备注:测试环境下,除了 CN 其他真的随意填写。

  1. 生成自签名证书(server.crt)
#  携带SAN信息文件的方式
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -extfile san.cnf -extensions v3_req# 不用文件也可以,参考如下:CN、DNS和IP替换成你的需求
openssl req -new -key private-key.pem -out csr.pem -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com,DNS:www.example.com,IP:192.168.0.1"

最终,server.keyserver.crt 就是你的 https 要用凭证,重新配置好凭证就好了。


http://www.ppmy.cn/embedded/127852.html

相关文章

一个好的维权小程序应该是什么样的?

小程序如今为大家提供了很多的便利服务,且小程序的种类、功能是很多样的,那么对于一个好的维权小程序来说,其功能和设计应该紧紧围绕着用户的需求。 设计页面应该直观简单,功能布局让人一目了然;操作简单,…

Python中的数据可视化艺术:用Matplotlib和Seaborn讲故事

Python中的数据可视化艺术:用Matplotlib和Seaborn讲故事 数据可视化不仅仅是图表的绘制,更是通过视觉形式传达复杂信息的一种艺术。使用Python中的两个强大的库——Matplotlib和Seaborn,可以将数据转化为清晰、优美的图表,帮助我…

Spring Boot课程支持:智能答疑系统

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

ssm基于Javaee的影视创作论坛的设计与实现

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 …

Redis 的安装与部署(图文)

前言 Redis 暂不支持Windows 系统,官网上只能下载Linux 环境的安装包。但是启用WSL2 就可以在Windows 上运行Linux 二进制文件。[要使此方法工作,需要运行Windows 10 2004版及更高版本或Windows 11]。本文在CentOS Linux 系统上安装最新版Redis&#xf…

滚雪球学Redis[6.1讲]:Redis的高级特性与应用

全文目录: 前言1. Redis事务Redis事务的概念与实现使用MULTI、EXEC命令实现事务Redis事务的注意事项与陷阱 2. Redis脚本与Lua使用Lua脚本的优势EVAL命令与Lua脚本的编写Lua脚本的安全性与性能 3. Redis分布式锁分布式锁的概念与应用场景使用Redis实现分布式锁Redlo…

tortoisegit简单用法

一、基础设置 1.官网 https://tortoisegit.org/ TortoiseGit – Windows Shell Interface to Git 2.下载 3.安装 4.设置 5.克隆远程仓库 二、团队合作 1.在dev分支上创建分支 主分支:master 发开分支:dev 自己的分支:test_branch 2.修…

Ubuntu内存扩容

目录 vmware设置Ubuntu设置查看 读研后发现,Ubuntu的使用量直线上升,之前给配置了20g内存,安装了个ros后,没啥内存了。本文实现给Ubuntu扩容。 vmware设置 这里 我使用别人的截图来演示。 我在这里改成了60 Ubuntu设置 sudo a…