【问题标题】:What cipher suites come with Java jdk1.7.0_03, and / or how do I provision my RMI installation with them?Java jdk1.7.0_03 附带了哪些密码套件,和/或如何使用它们配置我的 RMI 安装?
【发布时间】:2012-03-09 23:05:15
【问题描述】:

我一直在为这个问题绞尽脑汁,here,突然想到检查 RMI 服务器是否有任何密码套件可用。因此,我在启动 RMI 注册表之前将以下代码放入:

msg("trustStore: "+System.getProperty("javax.net.ssl.trustStore"));
msg("trustStorePassword: "+System.getProperty("javax.net.ssl.trustStorePassword"));
msg("keyStore: "+System.getProperty("javax.net.ssl.keyStore")); 
msg("keyStorePassword: "+System.getProperty("javax.net.ssl.keyStorePassword"));
msg("rmi.server.hostname: "+System.getProperty("java.rmi.server.hostname"));msg("supportedCipherSuites: "+System.getProperty("javax.rmi.ssl.client.supportedCipherSuites"));
msg("enabledCipherSuites: "+System.getProperty("javax.rmi.ssl.client.enabledCipherSuites"));
msg("debug: "+System.getProperty("javax.net.debug"));

(其中 msg 只是通过 System.out.println 发送数据。)

...我惊恐地发现“supportedCipherSuites”是NULL

什么?!

我查看了整个创建过程,“使用了 google”,但还没有弄清楚我应该如何使用合适的密码套件填充我的安装。 ...我不是在寻找特别的东西,只是基本的普通东西就可以了!

Arg!

P.S. RMI Registry 的 javax.net.debug 输出到哪里去了?到处都找不到!谢谢....

【问题讨论】:

  • 您是否安装了无限强度加密策略文件?
  • @MarkRotteveel 不明确 - 我该怎么做?以前有 JSSE 下载,但我今天没有找到。 ...我认为这是我提出的问题的一部分,“我应该如何使用合适的密码套件填充我的安装?” -smile- 听起来你可以告诉我!
  • 默认情况下,Java 安装会限制加密强度,因为奇怪的美国出口法律(一直都是如此)。您可以在java.oracle.com 下载策略文件(顺便说一句:我不是说这是解决方案)

标签: java ssl encryption


【解决方案1】:

您可以在 SunJSSE provider documentation 中找到 Oracle JRE 7 中支持的密码套件列表:默认情况下分别启用和禁用两个表。

我不会太担心System.getProperty("javax.rmi.ssl.client.supportedCipherSuites")) 返回null:这些系统属性是供您进行设置的,而不是供 JRE/RMI API 发布其当前状态的。此外,没有提及此系统属性in the documentation,其中记录了javax.rmi.ssl.client.enabledCipherSuites。 如果要使用特定的密码套件,请设置javax.rmi.ssl.client.enabledCipherSuites,请勿阅读。

获取javax.net.ssl.* 属性不一定会告诉您实际使用的值是什么(请参阅this answer)。例如,null javax.net.ssl.trustStore 仍将使用默认信任库。

javax.net.debug 也是如此:由您设置和使用 Net/SSL API,而不是相反。

【讨论】:

  • 我不能证明你对“javax.rmi.ssl.client.enabledCipherSuites”的看法是错误的,但是如果它确实像你描述的那样使用,那么它的名字就是stupid。 它应该是“setCipherSuites”,甚至只是“enableCipherSuites”——“ed”使它成为过去时。我发现创建 Java SSE 的工程师会不知道英文后缀的正确使用和含义,这很奇怪!也就是说,您的答案似乎是正确的,所以我将其标记为正确! -smile- 谢谢你的帮助。
  • 据我所知,“-ed”不仅用于过去时或过去式,还可以用作名词修饰语,几乎可以用作形容词(例如“需要某事。”),虽然我认为“某事已启用”和“某事已启用”都可以工作。系统属性是设置,而不是方法;一个主动动词会暗示一个动作,然后,这不是系统属性要做的事情。或许可以在english.stackexchange.com 上提问 :-)
  • 嗯,我更喜欢我的“drop the d”解决方案 - 这样它就不是一个动作,就像 set 一样,而是一个请求,就像“please!” -smile- 男孩,如果我们是制作软件的工程师,软件会更好!哦,等等,我们是,只是不是 Java 工程师!
猜你喜欢
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 2018-12-18
  • 1970-01-01
  • 2015-10-10
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多