首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.setProperty与Security.setProperty的区别

System.setProperty与Security.setProperty的区别
EN

Stack Overflow用户
提问于 2016-10-25 05:09:39
回答 1查看 3.1K关注 0票数 1

在java应用程序中可以在定制芯片上运行的代码行如下所示。

代码语言:javascript
复制
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)我在网上做了大量的搜索,但是无法连接这些类之间的点,如果我错过了或者做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 05:29:44

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

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

不是的。

因此,"ssl.SocketFactory.provider"属性设置在谁身上并不重要。

这确实很重要。

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

因此,在系统属性中设置"ssl.SocketFactory.provider"将无法工作。但是,如果你:

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

那就行了。

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40231796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档