为 SpringBoot 应用程序指定密钥库时,javax.net.ssl.keyStore 和 server.ssl.key-store 属性有什么区别
What is the difference between javax.net.ssl.keyStore and server.ssl.key-store properties when specifying keystore for a SpringBoot app
我可以使用这些属性之一指定密钥库吗 - Java-特定的 javax.net.ssl.keyStore 或 spring 引导特定的 server.ssl.key-store。有什么不同吗?我想使用密钥库来使用 https 为我的应用程序提供服务,以及使用一些 REST 服务进行相互客户端身份验证
如果密钥库未指定为 属性 或 jvm 参数,而是在启动时使用自定义代码读取,是否可以使用 https 为 SpringBoot 应用程序提供服务?或者如果必须使用 https 提供应用程序,密钥库规范是否必须在此之前?
这两个属性具有互补作用:
javax.net.ssl.keyStore
是 系统 属性 由 Java 安全提供程序用来配置默认值 SSLContext
.大多数 SSL 客户端 使用默认 SSLContext
.
您不需要将此 属性 作为 -D
参数传递给 JVM,您可以在 早期 阶段以编程方式设置它你的应用程序启动,但我建议不要这样做:因为你的应用程序可能不是 JVM 中唯一的应用程序(例如你的 运行 它作为 WAR 存档),你将影响其他应用程序的行为。请改用非默认 SSLContext
。
server.ssl.keyStore
是 Spring 属性 配置 server 嵌入式 servlet 容器的套接字。它可以来自 many different sources.
虽然理论上 servlet 容器可以使用默认值 SSLContext
并从默认值 KeyManager
检索其证书(它从通过 javax.net.ssl.keyStore
指定的密钥库加载其密钥),但我不知道有任何 servlet 容器可以实际执行此操作。
通常用作SSL客户端的证书与用作SSL服务器的证书不同。
我可以使用这些属性之一指定密钥库吗 - Java-特定的 javax.net.ssl.keyStore 或 spring 引导特定的 server.ssl.key-store。有什么不同吗?我想使用密钥库来使用 https 为我的应用程序提供服务,以及使用一些 REST 服务进行相互客户端身份验证
如果密钥库未指定为 属性 或 jvm 参数,而是在启动时使用自定义代码读取,是否可以使用 https 为 SpringBoot 应用程序提供服务?或者如果必须使用 https 提供应用程序,密钥库规范是否必须在此之前?
这两个属性具有互补作用:
javax.net.ssl.keyStore
是 系统 属性 由 Java 安全提供程序用来配置默认值SSLContext
.大多数 SSL 客户端 使用默认SSLContext
.您不需要将此 属性 作为
-D
参数传递给 JVM,您可以在 早期 阶段以编程方式设置它你的应用程序启动,但我建议不要这样做:因为你的应用程序可能不是 JVM 中唯一的应用程序(例如你的 运行 它作为 WAR 存档),你将影响其他应用程序的行为。请改用非默认SSLContext
。server.ssl.keyStore
是 Spring 属性 配置 server 嵌入式 servlet 容器的套接字。它可以来自 many different sources.虽然理论上 servlet 容器可以使用默认值
SSLContext
并从默认值KeyManager
检索其证书(它从通过javax.net.ssl.keyStore
指定的密钥库加载其密钥),但我不知道有任何 servlet 容器可以实际执行此操作。通常用作SSL客户端的证书与用作SSL服务器的证书不同。