在java应用程序中可以在定制芯片上运行的代码行如下所示。
System.setProperty("ssl.SocketFactory.provider", "some.custom.socketFactory");我从互联网上推断,"ssl.SocketFactory.provider“是要设置在java.security.Security类上的一个属性。
如果将"ssl.SocketFactory.provider“设置为”系统属性“而不是”安全性“属性会产生任何差异(正或负),是否正确,我的意思是系统和安全子集或彼此的超级集,所以设置"ssl.SocketFactory.provider”属性的对象并不重要。
P.S: 1)芯片上的java应用程序成功地管理了与服务器的通信,但当从更新的服务器请求客户端身份验证时,SSlSocketFactory(由验证的信任和密钥管理器工厂初始化的SSLContext创建)无法在服务器端创建一个套接字,在.createSocket( IP,端口)处永远无法在服务器IP和port.The线程块上创建套接字;
2)我在网上做了大量的搜索,但是无法连接这些类之间的点,如果我错过了或者做错了什么。
发布于 2016-10-25 05:29:44
Security.getProperty和setProperty方法在Properties对象中设置Security类的私有属性。
我的意思是系统和安全子集或者是彼此的超集。
不是的。
因此,
"ssl.SocketFactory.provider"属性设置在谁身上并不重要。
这确实很重要。
默认的安全属性是从Java中的一个文件中加载的,即"$JAVA_HOME/lib/security/java.security",其中$JAVA_HOME表示有效的java。可以通过通过"java.security.properties"属性在System属性中指定的属性文件来重写这些属性。
因此,在系统属性中设置"ssl.SocketFactory.provider"将无法工作。但是,如果你:
"ssl.SocketFactory.provider"属性放入其中,并且"java.security.properties"添加到System属性;例如,使用-D命令行选项。那就行了。
(以上细节是从阅读Java 8源代码中收集到的。在其他版本中,实现可能有所不同。)
https://stackoverflow.com/questions/40231796
复制相似问题