2017-05-11 36 views
1

我正在调查在Java服务器上配置两个证书(一个使用SHA1签名,另一个使用SHA256签名)的可能性。具体来说,我创建了一个我已经导入两个证书的密钥库。此密钥库,然后设置要使用我的简单的Java服务器应用程序具有以下sintax:在Java服务器应用程序上同时配置两个SSL证书

System.setProperty("javax.net.ssl.keyStore","key.jks"); 

System.setProperty("javax.net.ssl.keyStorePassword", "myPassword"); 

这里是我已经确定问题。当使用openSSL工具列出在我的安全套接字上打开的端口所使用的证书时(在服务器运行并监听连接时运行该命令),我可以看到只有一个证书被使用,另一个被忽略。

问题是:有什么办法可以告诉我的服务器同时使用两个证书吗?这是需要的,因为我也有两个应该能够与服务器通信的Java客户端应用程序。其中之一是信任SHA1签名证书,另一个信任SHA2证书。

谢谢!

+0

我不知道,但我非常怀疑它。除此之外,强烈建议您停止信任SHA1证书。如果已知的在SHA1中查找冲突的能力变得[与MD5一样糟糕](https://blogs.technet.microsoft.com/srd/2012/06/06/flame-malware-collision-attack-explained/ ),您将通过支持使用不安全哈希函数签名的证书来将用户数据置于严重风险之中。这意味着你真的应该升级客户端。 – TheGreatContini

+0

哪个证书属于服务器的私钥? –

+0

我的服务器密钥库包含两个证书,但是当列出由我的套接字端口使用的实际证书时,我可以看到只使用了第一个添加的证书。我甚至创建了两种不同类型的证书(一种使用RSA算法和另一种DSA),并配置我的客户端A仅信任RSA证书,而我的客户端B仅信任DSA证书。它没有区别,连接服务器客户端不成功。我知道不再推荐SHA1,但升级目前不是一种选择。 –

回答

0

她指的是过渡阶段。由于客户端不在服务器所有者的控制之下,因此无法执行升级。在有限的时间内,只有知道&信任新SHA256证书的新客户端才会连接到服务器,而只知道&的旧客户端信任旧SHA1签名证书的客户端也必须仍能够连接到服务器。这就是为什么这个过渡期是必需的。

+0

你的回答是谁? – Vivit

相关问题