与Custom CipherSuites的Java HTTPS连接

时间:2011-04-22 15:25:53

标签: java ssl encryption https

因此,假设我尝试使用HttpsURLConnection通过HTTPS连接到Web服务器。现在,如果我使用以下方式设置/限制客户端上的密码:

System.setProperty("https.cipherSuites", myCustomCipherSuites);

我想知道如何在我的Java客户端和Web服务器之间达成一致的密码。例如,如果我的密码套件包括[中,强]和Web服务器支持[弱,中,强,更强] ......

1-是否会选择“强”,即客户端和服务器上最强的? 2-是否存在Web服务器定义的优先级,然后在客户端上进行可用性检查以找到具有最高优先级的密码(在Web服务器上)并且相互可用(在客户端和服务器上)?

另外,如果我有一个密码“a”,“b”,“c”和“d”的列表,并且web服务器只支持“e”,“f”和“g”......我可以确保客户端和服务器在放弃之前试图找到一个公共密码(因为没有可用的通用密码)会耗尽所有协商连接的可能性。我很确定答案是肯定的......但我只想确认一下。

1 个答案:

答案 0 :(得分:1)

关于你的第一个问题:

客户提供了一个密码套件列表,它是首选订单(最需要的是,最不需要的最后一个)。

服务器假设选择列表中愿意同意的第一项,忽略服务器可能具有的任何偏好。但是,没有(简单)方法可以阻止服务器使用自己的首选项(如果它们与客户端的首选项不匹配)。

对于第二个,如果没有匹配的密码套件,则连接失败。这不是一个“废气”,就像“我支持A,B,C和D”一样“我不支持任何这些。猜猜我们无法连接。”