具有有效证书的 Spring Boot https 获取 ERR_SSL_VERSION_OR_CIPHER_MISMATCH,自签名工作正常

2023-12-09

我正在运行 Spring Boot 1.4.0.RELEASE。

我从 IT 部门获得了有效证书。

我使用 IT_cert.cer 生成了 tomcat keystore.jks 文件

keytool -keystore tomcat-keystore.jks -storepass password -import -alias "tomcat" -file it_issued_cert.cer

配置我的 application.yml 以打开 SSL

server:
  context-path: /uaa
  port: 9999
  ssl:
      enabled: true
      key-store: classpath:tomcat-keystore.jks
      key-store-password: password
      key-password: password
      enabled-protocols: TLSv1.2 # make sure only to use the latest TLS version

用于签署证书的算法是

Signature algorithm name: SHA256withRSA

当我运行 spring-boot 应用程序时,它会启动并找到我的证书。

当我在 HTTPS 端口上使用 chrome 时,浏览器不再出现“不受信任”警告。

但现在 Chrome 和 IE11 出现 ERR_SSL_VERSION_OR_CIPHER_MISMATCH ,声称我可能正在使用 RC4 加密......

我尝试指定低于 TLSv1.2 的非安全协议并采用默认值..但它们都会导致相同的错误。

我确信最新的 Chrome/IE11 具有 TLSv1.2 所以我对浏览器的错误感到困惑。

另外,如果我使用自签名,一切正常,但我收到有关信任自签名的安全警告。

我的结论是我配置证书的方式导致了此错误,或者可能是我的 IT 部门的签名算法?


近乎欺骗Java SSLHandshakeException:没有共同的密码套件

HTTPS 服务器需要私钥和匹配的证书,并且根据证书的颁发方式,服务器可能还需要“链”或“中间”证书(有时不止一个)。您导入了only一个证书还不够。

首先查看你的文件it_issued_cert.cer查看它是否为 PEM 格式:它是否包含分组为行的所有可读字符,并且至少有一个块以一行开头
-----BEGIN sometype_in_caps-----
然后是一些完全由字母、数字、加号组成的行+和斜线/也许等于=最后,最后一行
-----END same_type----?

如果 PEM 并且至少有两个块,其中一个具有类型[RSA|DSA|EC|ENCRYPTED] PRIVATE KEY而其他人有类型[X.509|maybesomethingelse] CERTIFICATE,可以使用OpenSSL转换为PKCS12,然后使用keytool转换为JKS。首先检查是否需要任何“链”或“中间”证书:如果文件已经包含多个证书并且不是由完整的傻瓜准备的,那么这些多个证书形成所需的 chai,则继续。如果文件仅包含一个证书,请使用openssl x509 -in $file -noout -subject -issuer确保主题是您的服务器并查看发行者;如果颁发者是您环境中信任的 CA(例如“我的公司 CA”),请继续。否则,如果需要任何链证书,请询问 IT 人员怎么办,获取 PEM 格式的证书,并将其添加到文件中。然后做:

openssl pkcs12 -export -in $file -out new.p12 -friendlyname alias_you_want

(编辑)自 8u60(2015 年 - 甚至在我写原始答案之前)开始,Java 默认接受 PKCS12 密钥库,如果配置,早期版本可以这样做。对于需要 JKS 的早期版本,请执行以下操作(拼写已更正,如 aszahran 所评论):

keytool -importkeystore -srckeystore new.p12 -srcstoretype pkcs12 -destkeystore new.jks 
# on Java versions that need JKS, it is the default type
# but can specify -deststoretype jks if you want

如果文件是 PEM,但只有一个块的类型为 CERTIFICATE,或者如果文件根本不是 PEM,则该证书必须是为了响应某人的 CSR(证书签名请求)而颁发的:

如果您向他们提供了 CSR,请提供详细信息(编辑您的问题)您生成 CSR 的方式和地点。这就是私钥所在的位置,您需要使用该密钥、复制它或转换(并复制)它,具体取决于您所做的操作。

如果您没有向他们提供 CSR,请询问他们从哪里获得的。如果他们自己生成密钥和 CSR,请向他们索要 PEM 格式的密钥。如果他们从其他人那里获得了 CSR,请向其他人索要 PEM 格式的密钥。获取后,将其添加到文件中,然后返回到上面的情况。如果他们坚持提供 PEM 格式以外的其他内容,请提供详细信息。

如果没有人拥有该证书的私钥,则该证书无法使用。丢弃它并重新开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有有效证书的 Spring Boot https 获取 ERR_SSL_VERSION_OR_CIPHER_MISMATCH,自签名工作正常 的相关文章

  • 使用 Eclipse 将具有外部依赖项的 Java 项目导出到 jar

    有没有一种简单的方法可以将 Java 项目 包括其所有外部依赖项 导出到标准 jar 文件 我开发了一个使用多个 Apache 库的 SDK 我希望能够将该项目作为单个 jar 发布 到目前为止我找到的这个问题的答案要求将项目打包为 Run
  • Spring @Validated 在服务层

    Hej 我想使用 Validated group Foo class 在执行方法之前验证参数的注释 如下所示 public void doFoo Foo Validated groups Foo class foo 当我将此方法放入 Spr
  • 按位运算符简单地翻转整数中的所有位?

    我必须翻转整数的二进制表示形式中的所有位 鉴于 10101 输出应该是 01010 当与整数一起使用时 完成此操作的按位运算符是什么 例如 如果我正在编写类似的方法int flipBits int n 什么会进入身体 我只需要翻转数字中已经
  • 探索java图像处理的好资源[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是图像处理领域的新手 请推荐一些好的资源 书籍和网络链接 来学习 Java 中的图像处理 最适合隐写术分析 适合初学者和高级水平 我看过
  • Java:无安全管理器:RMI 类加载器已禁用

    您好 我有 RMI 应用程序 现在我尝试从客户端调用服务器上的一些方法 我有以下代码 public static void main final String args try Setting the security manager Sy
  • 如果主引用指向 null,WeakReference 或 SoftReference 有何不同

    我正在读关于WeakReference https docs oracle com javase 10 docs api java lang ref WeakReference html and SoftReference https do
  • 为什么Java中的文件名与公共类名相同? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在Java中 文件名应该与文件名相同public class包含在该文件中 为什么这是一个限制 它有什么目的 Java 有一个有趣的方法 如果给
  • Java时间转正常格式

    我有 Java 时间1380822000000 我想转换为我可以阅读的内容 import java util Date object Ws1 val a new Date 1380822000000 toString 导致异常 warnin
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • Java:不使用 Arrays.sort() 对整数数组进行排序

    这是我们 Java 课程的练习之一中的说明 首先 我想说我 做了我的功课 我不仅仅是懒惰地请 Stack Overflow 上的人帮我回答这个问题 在所有其他练习中 这个特定项目一直是我的问题 因为我一直在努力寻找 完美的算法 编写JAVA
  • JPA 的 Hibernate 查询提示

    我一直在尝试为所有可以通过设置的提示找到一个明确的资源Query setHint String Object JPA 中的方法调用 但我一无所获 有人知道一个好的参考吗 See 3 4 1 7 查询提示 http docs jboss or
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 默认情况下,JSF 生成不可用的 ID,这些 ID 与 Web 标准的 CSS 部分不兼容

    活跃的 JSF 或 Primefaces 用户能否解释一下为什么默认情况下会发生这种情况 为什么没有人对此采取任何措施
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • Java:java.util.Preferences 失败

    我的程序将加密的产品密钥数据保存到计算机上java util Preferences类 系统首选项 而不是用户 问题是 在 Windows 和 Linux 上 尚未在 OSX 上测试过 但可能是相同的 如果我不运行该程序sudo或者具有管理
  • Java 常量枚举[重复]

    这个问题在这里已经有答案了 可能的重复 理解 Java 中的枚举 https stackoverflow com questions 1419835 understanding enums in java 为什么我们应该使用枚举而不是 Ja
  • 测量 tomcat 的排队请求数

    因此 使用tomcat 您可以设置acceptCount值 默认为100 这意味着当所有工作线程都忙时 新连接被放置在队列中 直到队列满 之后它们被拒绝 我想要的是监视此队列中项目的大小 但无法确定是否有办法通过 JMX 获取此值 即不是队
  • 通过向上转换将 Java.sql.date 转换为 Java.util.date 安全吗?

    java sql date 扩展了 java util date 那么通过将 java sql date 转换为 java util date 是否可以在两者之间进行转换 或者有其他方法可以转换它们吗 您不一定需要强制转换 您可以将 SQL
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS

随机推荐

  • 使用 JavaScript 验证特殊字符

    特殊字符 lt gt and 不允许出现在文本框中 我需要进行验证检查以限制提交时的这些字符以及空检查 我在函数中编写了整个验证代码 并在单击提交按钮时调用它 但单击时无法识别该函数 请帮我写一些JavaScript代码来实现这个功能 一个
  • Vue Router、GitHub Pages 和自定义域无法使用路由链接

    我的域名 myname com 我的 GitHub 存储库 myname 我的 GitHub 名称 myname 底层 GH 页面 URL myname github io myname 我的问题 我使用 History Vue Route
  • Android ListView 编程选择/突出显示

    我有一个简单的列表视图和列表适配器设置 如下所示 listAdapter new ArrayAdapter
  • 为什么这个任务挂起?

    TestMethod public void Y int i 0 new Task gt i Wait Assert AreEqual 1 i 上例中的任务为何永远等待 我该怎么办Wait 对于任务 所以它不会挂起 你没有start the
  • Linux 上的 pthread 条件变量,奇怪的行为

    我正在 Linux 上同步读取器和写入器进程 我有 0 个或多个进程 读者 需要休眠 直到它们被唤醒 读取资源 返回休眠状态等等 请注意 我不知道随时有多少个读者进程启动 我有一个进程 编写器 它在资源上写入 唤醒读者并执行其业务 直到另一
  • 如何强制水平方向?

    我想做以下事情 ViewControllerA 不应进入水平方向 ViewControllerA 推送 ViewControllerB ViewControllerB 应该进入水平方向 不知道要设置什么才能实现这一点 In each UIV
  • X11中的截图

    使用 Xlib 库可以使用哪些函数来截取 X11 桌面的屏幕截图 我更喜欢一种比获取单个像素更有效的方法 Thanks X11中截屏的 标准工具是使用 xwd root gt myscreen xwd 然后 转换为 pnm xwd2pnm
  • 正则表达式 字符串内只有一个点,不在开头或结尾

    我怎样才能写一个正则表达式 in javascript只允许用户这样写 abc def abc def or abc 所以基本上匹配只包含字母的模式 仅限小写字母 a z and a or 但不匹配 or 在字符串的开头或结尾或多次 只有一
  • 渲染设计编辑密码表单

    我试图在另一个视图中呈现设计编辑密码表单 因为我不想重复编辑密码逻辑 我尝试了以下操作 生成设计视图后 渲染上的许多其他变化似乎都给了我同样的错误 foo foo 中的 ActionView MissingTemplate 缺少部分设备 密
  • .NET 枚举允许在最后一个字段中使用逗号

    为什么这个 NET 枚举允许在最后一个字段中包含逗号 这有什么特殊的意义吗 FlagsAttribute public enum DependencyPropertyOptions byte Default 1 ReadOnly 2 Opt
  • 运行 java -jar 时包含外部 jar

    根据我的阅读 当您执行如下命令时 java jar foo jar 然后主类路径将被忽略 类路径将从清单文件中获取 此外 在命令行上声明的类路径也会被忽略 所以在 java classpath usr local jar foobar ja
  • 在 C# 中使用动态 Or 表达式

    我在程序中使用动态过滤器 如下所示 public static IQueryable
  • 如何在 swift 3 中制作单选按钮

    我正在创建一个 Swift iOS 应用程序 其中我必须显示一个接受水平和垂直方式的单选按钮 我在 GitHub 上找到了一个库 它看起来可以解决我的问题 但它只显示水平方向 并排方向 我需要垂直方向 即在另一个单选按钮下方显示一个单选按钮
  • 在 XSD 中我想指定元素只能有空白内容

    以下 XSD 应允许名为 OnlyWhiteSpaceElement 的元素 该元素具有必需的 Name 属性 并且只能包含空白内容
  • KeyListener 的多键检测 (java)

    如何实现 KeyListener 以便我可以创建一个两人游戏系统 其中一个人使用 和 来控制一个角色 而另一个人可以使用方向键而不互相打扰 我现在的方式是 当一个人按住箭头键时 他们的角色会移动 但是当您使用其他玩家的控件时 第一个人的角色
  • python for循环中的负索引[重复]

    这个问题在这里已经有答案了 我在谷歌搜索时发现了这个问题 但无法理解这是怎么发生的 a 0 1 2 3 for a 1 in a print a 1 Result 0 1 2 2 现在如果我再次打印 a 0 1 2 2 另一个类似的例子 设
  • Android 无需 root 即可访问 ARP 表

    最近在做一个Android项目 需要访问ARP表 要求之一是避免任何需要 root 设备的方法 所以 我的问题是 有没有办法在不root设备的情况下访问android中的ARP表 目前我发现大多数方法都使用 proc net arp 来访问
  • 如何在 jquery DataTable 中保持活动页面

    我在 jquery dataTable 上列出了一些数据 并且由 DataTable 插件默认完成分页 我想在处理数据时获取数据表的当前页面 并在处理操作后将该页面设置为活动状态并重新加载数据 看看这个小提琴 您可以看到如何获取当前页面 在
  • 关于如何更改通知接收器中的 setLatestEventInfo 的替代方法

    您好 我在这一点上有库存 其中 setLatesEventInfo 有错误 我知道 setLatestEventInfo 不能在 API 23 及更高版本上运行 有人可以帮助我如何让这段代码运行吗 我的意思是替代方法 功能相同但编码不同 这
  • 具有有效证书的 Spring Boot https 获取 ERR_SSL_VERSION_OR_CIPHER_MISMATCH,自签名工作正常

    我正在运行 Spring Boot 1 4 0 RELEASE 我从 IT 部门获得了有效证书 我使用 IT cert cer 生成了 tomcat keystore jks 文件 keytool keystore tomcat keyst