系统之间的差异.setProperty和Security.setProperty



在设计用于在定制芯片上运行的java应用程序的代码行下面找到。

System.setProperty("ssl.SocketFactory.provider", "some.custom.socketFactory");

我从互联网上推断"ssl.SocketFactory. net"。"provider"是一个要在java.security.Security类中设置的属性。

我很困惑,如果设置"ssl.SocketFactory。"提供者"作为系统属性而不是安全属性会有任何区别(积极或消极),我的意思是系统和安全是彼此的子集或超集,所以谁使用"ssl.SocketFactory"并不重要。

p。史:1)芯片上的java应用程序成功地管理了与服务器进行服务器身份验证的服务器通信,但是当从更新的服务器请求客户端身份验证时,SSlSocketFactory(从经过验证的信任和密钥管理器工厂初始化的SSLContext创建)无法在服务器IP和端口上创建套接字。线程永远阻塞在。createsocket (IP,port);

2)我在网上做了很多搜索,但无法连接这些类之间的点,如果我错过或做错了什么。

Security.getPropertysetProperty方法在Properties对象中设置属性,该对象对Security类是私有的。

我的意思是系统和安全是彼此的子集或超集。

所以"ssl.SocketFactory.provider"属性对谁设置并不重要。

这很重要。


默认的安全属性是从Java安装的文件中加载的;即"$JAVA_HOME/lib/security/java.security",其中$JAVA_HOME表示有效的 java home。这些可以通过通过System属性中的"java.security.properties"属性指定的属性文件来覆盖。

所以在系统属性中设置"ssl.SocketFactory.provider"将不起作用。但是,如果您:

  1. 创建安全属性覆盖文件,
  2. "ssl.SocketFactory.provider"属性放入其中,
  3. 添加一个适当的"java.security.properties"引用覆盖文件到你的System属性;例如使用-D命令行选项。

那么应该起作用。


(以上细节是通过阅读Java 8源代码收集的。在其他版本中实现可能会有所不同)

相关内容

  • 没有找到相关文章

最新更新