在为SpringBoot应用程序指定密钥库时,javax.net.ssl.keyStore和server.ssl.key-store属性之间有什么区别
我可以使用这些属性中的任何一个来指定密钥存储库—特定于Java的javax.net.ssl.keystore或特定于spring boot的server.ssl.key-store。有什么不同吗?我想使用密钥库为我的应用程序提供https服务,以及与一些REST服务的相互客户端身份验证在为SpringBoot应用程序指定密钥库时,javax.net.ssl.keyStore和server.ssl.key-store属性之间有什么区别,java,spring-boot,keystore,jks,Java,Spring Boot,Keystore,Jks,我可以使用这些属性中的任何一个来指定密钥存储库—特定于Java的javax.net.ssl.keystore或特定于spring boot的server.ssl.key-store。有什么不同吗?我想使用密钥库为我的应用程序提供https服务,以及与一些REST服务的相互客户端身份验证 如果密钥库没有指定为属性或jvm参数,而是在启动时使用自定义代码读取,那么可以使用https为SpringBoot应用程序提供服务吗?或者,如果应用程序必须使用https提供服务,那么密钥库规范必须在这之前出现吗
这两个属性具有互补作用:
是一个系统属性,Java安全提供商使用该属性配置默认的javax.net.ssl.keyStore
。大多数SSL客户端使用默认的SSLContext
您不需要将此属性作为SSLContext
参数传递给JVM,您可以在应用程序启动的早期以编程方式设置它,但我建议您不要这样做:因为您的应用程序可能不是JVM中的唯一应用程序(例如,您将其作为WAR归档运行),您将影响其他应用程序的行为。改用非默认的-D
SSLContext
是一个Spring属性,用于配置嵌入式servlet容器的server套接字。它可以来自于 理论上,servlet容器可以使用默认的server.ssl.keyStore
,并从默认的SSLContext
(它从通过KeyManager
指定的密钥库加载其密钥)检索其证书,但我不知道有哪个servlet容器会真正这样做 通常,用作SSL客户端的证书与用作SSL服务器的证书不同javax.net.ssl.keystore