本文主要是介绍JSSE系统属性的配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概述Java安全套接字扩展(JSSE)提供SSL/TLS的底层框架实现。在此框架中,你可以使用各种JSSE的系统属性来配置SSL/TLS协议和部署X.509证书。
系统属性
表格列出可用来配置SSL、HTTPS、Stomp+SSL传输协议上的系统属性
系统属性名 | 描述 |
---|---|
javax.net.ssl.keyStore | Java的密钥库的路径,它包含应用进程本身的证书和私钥。在Windows下, 路径名分隔符需要把反斜杠(\)改成斜杠(/) |
javax.net.ssl.keyStorePassword | 访问密钥库中私钥的密码,该密钥库由javax.net.ssl.keyStore指定,密码使用两次: 1. 解锁密钥库文件(库密码) 2. 解密存储在密钥库中的私钥(密钥密码) 换句话说,JSSE框架要求这两个密码必须相同。 |
javax.net.ssl.keyStoreType | (可选)对于密钥库文件格式,这个值为jks/JKS,默认已经为jks |
javax.net.ssl.trustStore | 包括CA证书的密钥库路径,这些CA证书是被应用进程信任的,也叫信任库。 在Windows下,路径名分隔符需要把反斜杠(\)改成斜杠(/) 如果信任库路径没有通过此属性指定,Sun的JSSE框架默认会按照下列顺序 搜寻和使用密钥库: 1. $JAVA_HOME/lib/security/jssecacerts 2. $JAVA_HOME/lib/security/cacerts |
javax.net.ssl.trustStorePassword | 解锁信任库的库密码 |
javax.net.ssl.trustStoreType | (可选)默认为jks |
javax.net.debug | SSL/TLS层的日志开关,可设为ssl |
警告
将证书存放在JSSE缺省信任库的位置(jssecacerts和cacerts)是有一个潜在的安全风险。如果你无权JDK安装目录下的信任证书库
进行管理,或者无法控制该JDK安装目录,你会发现这样太过随意了。
为安全起见,推荐你始终设置属性javax.net.ssl.trustStore,以便你可以在你的应用程序中完全控制这些CA证书命令行设置属性
在客户端和代理中,你可以通过命令行设置系统属性,-DProperty=Value.例如
java -Djavax.net.ssl.trustStore=truststores/client.ts com.progress.Client
在Windows中,你可以设置SSL_OPTS环境变量
set SSL_OPTS=-Djavax.net.ssl.keyStore=C:/Programs/FUSE/fuse-message-broker-7.1.0.fuse-047/conf/broker.ks
-Djavax.net.ssl.keyStorePassword=password
-Djavax.net.ssl.trustStore=C:/Programs/FUSE/fuse-message-broker-7.1.0.fuse-047/conf/broker.ts
-Djavax.net.ssl.trustStorePassword=password
在JAVA程序中设置属性
你也可以在Java API中设置这些JSSE系统属性,不过你必须要在调用相关传输层协议初始化之前设置好这些值。
import java.util.Properties;Properties systemProps = System.getProperties();
systemProps.put("javax.net.ssl.trustStore","C:/Programs/FUSE/fuse-message-broker-7.1.0.fuse-047/conf/client.ts"
);
System.setProperties(systemProps);
原文地址:
https://access.redhat.com/documentation/en-US/Fuse_MQ_Enterprise/7.1/html/Security_Guide/files/SSL-SysProps.html
这篇关于JSSE系统属性的配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!