为 SpringBoot 应用指定 keystore 时 javax.net.ssl.keyStore 和 server.ssl.key-store 属性有什么区别

2023-11-26

  1. 我可以使用以下属性之一指定密钥库 - Java 特定的 javax.net.ssl.keyStore 或 spring boot 特定的 server.ssl.key-store。有什么区别吗?我想使用密钥库来使用 https 以及通过一些 REST 服务进行相互客户端身份验证来为我的应用程序提供服务

  2. 如果密钥库未指定为属性或 jvm 参数,而是在启动时使用自定义代码读取,那么 SpringBoot 应用程序是否可以使用 https 提供服务?或者如果应用程序必须使用 https 提供服务,密钥库规范是否必须在此之前?


这两个属性具有互补的作用:

  • javax.net.ssl.keyStore is a systemJava 安全提供程序使用的属性来配置默认值SSLContext。大多数 SSLclients使用默认值SSLContext.

    您不需要将此属性传递为-DJVM 的参数,您可以以编程方式将其设置为非常early你的应用程序启动阶段,但我建议不要这样做:因为你的应用程序可能不是 JVM 中唯一的应用程序(例如,你将其作为 WAR 存档运行),所以你将影响其他应用程序的行为。使用非默认SSLContext反而。

  • server.ssl.keyStore is a Spring属性来配置server嵌入式 servlet 容器的套接字。它可以来自许多不同的来源.

    虽然理论上 Servlet 容器可以使用默认值SSLContext并从默认值中检索其证书KeyManager(它从通过指定的密钥库加载其密钥javax.net.ssl.keyStore),我不知道有任何 servlet 容器可以真正做到这一点。

    通常用作 SSL 客户端的证书与用作 SSL 服务器的证书不同。

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

为 SpringBoot 应用指定 keystore 时 javax.net.ssl.keyStore 和 server.ssl.key-store 属性有什么区别 的相关文章

随机推荐