gpt4 book ai didi

java - System.setProperty 和 Security.setProperty 的区别

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:00 30 4
gpt4 key购买 nike

在设计用于在自定义芯片上运行的 Java 应用程序中找到以下代码行。

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

我从互联网上推断“ssl.SocketFactory.provider”是要在 java.security.Security 类上设置的属性。

我很困惑,如果将“ssl.SocketFactory.provider”设置为系统属性而不是安全属性会产生任何差异(正面或负面),这是正确的吗,我的意思是系统和安全是彼此的子集或超集,因此设置“ssl.SocketFactory.provider”属性的对象并不重要。

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

2) 我在互联网上进行了大量搜索,但无法将这些类之间的点联系起来,也无法确定我是否遗漏或做错了什么。

最佳答案

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

I mean are System and Security subsets or supersets of each other.

没有。

so it does not matter on whom the "ssl.SocketFactory.provider" property is set.

这很重要。


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

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

  1. 创建安全属性覆盖文件,
  2. "ssl.SocketFactory.provider" 属性放入其中,然后
  3. 将引用覆盖文件的适当“java.security.properties”添加到您的系统属性;例如使用 -D 命令行选项。

那么应该工作。


(以上细节是阅读Java 8源码,其他版本实现可能不同。)

关于java - System.setProperty 和 Security.setProperty 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40231796/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com