如何实现部分ssl握手来测试任意密码套件?

ghhkc1vu  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(174)

“服务器”需要进行测试,以确保它不包含特定的密码套件,尽管我们的开发人员出于好意,但有时仍会将其放入服务器。
然而:
我们不能使用在线服务来测试服务器,因为服务器不在internet上
我们不能使用库,因为运行测试的设备使用特殊的jdk,并且外部库不能编译
我们无法使用本地安装的工具,因为运行时是特定的,并且与linux/windows不兼容
(=我们必须使用标准java 8推出自己的产品)
此外,我们不想只测试测试客户机安装的密码套件,而是“任何”将作为任意文本提供的密码套件。
我在网上找到了(ivan ristić的openssl食谱):
对于ssl实验室,我为此使用了部分握手,使用了一个假装支持任意套件的定制客户端。实际上,它甚至不能协商一个套件,但仅仅提议协商就足以让服务器告诉您它们是否支持套件。这样不仅可以测试所有套件,而且还可以非常有效地进行测试。
这个定制客户机现在听起来非常适合我们的目的,并且在将来的类似ssl测试中会很有用——但我不知道java-8的ssl套接字代码中的“部分握手”或“建议协商”是什么样子。我的最大努力如下:

String[] enabledSuites = {"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"};
mySocket.setEnabledCipherSuites(enabledSuites);
mySocket.startHandshake();

上面提到的套件可以工作,因为客户端拥有它,而服务器允许它。但是,当我尝试“我的套件”时,代码停止在 setEnabledCipherSuites() 与: Unsupported CipherSuite: MY_SUITE 对我来说,这意味着客户甚至没有尝试过这个,因为它不在列表中 getSupportedCipherSuites() 那么,部分握手可以在Java8中实现吗(不需要重写套接字上的所有额外代码)?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题