java sslcontext_java – SSLContext初始化

我正在查看JSSE参考指南,我需要获取SSLContext的实例才能创建SSLEngine,因此我可以将它与Netty一起使用以启用安全性.

要获取SSLContext的实例,我使用SSLContext.getInstance().我看到该方法被多次覆盖,因此我可以选择使用协议和安全提供程序.

Here,我可以看到可以使用的算法列表.我应该使用哪种算法来实现安全通信?

此外,由于可以指定要使用的安全提供程序,我应该使用哪个提供程序?

谢谢

解决方法:

正如您在standard names documentation中看到的,所有条目(SSLv3,TLSv1.0,TLSv1.1,…)都表示它们可能支持其他版本.

实际上,在Oracle JDK(和OpenJDK)中,他们都这样做.如果查看source code,则TLS10Context类用于TLS,SSL,SSLv3和TLS10,TLS11Context用于TLSv1.1,TLS12Context用于TLSv1.2.所有版本都支持所有版本的SSL / TLS,默认情况下启用的内容会有所不同.

这可能与其他提供商或JRE供应商不同.您当然应该选择一个至少支持您要使用的协议版本的程序.

作为一般规则,请使用最高版本号(SSLv3< TLSv1.0< TLSv1.1 ...),这可能取决于您要与之通信的各方支持的内容.

默认情况下启用哪些协议取决于Oracle JRE的确切版本.

在查看the source code for sun.security.ssl.SunJSSE in OpenJDK 7u40-b43时,就SSLContext协议而言,TLS只是TLSv1的别名(SSL和SSLv3也是如此).查看各种implementations of SSLContextImpl(这是SSLContextImpl本身的内部类):

>所有支持所有协议.

>默认情况下,在服务器端启用所有协议.

>默认启用的客户端协议有所不同:

> TLS10Context(用于协议SSL,SSLv3,TLS,TLSv1)默认在客户端启用SSLv3到TLSv1.0.

> TLS11Context(用于协议TLSv1.1)默认情况下也启用TLSv1.1.

> TLS12Context(用于协议TLSv1.2)默认情况下也启用TLSv1.2.

>如果启用了FIPS,则不支持SSL(因此默认情况下不启用).

同样,在查看the source code for sun.security.ssl.SunJSSE in OpenJDK 8u40-b25时,SSLContext协议TLSv1,TLSv1.1和TLSv1.2也使用TLS10Context,TLS11Context和TLS12Context,它们遵循与Java 7中相同的逻辑.

但是,协议TLS不再是其中任何一个的别名.相反,它使用TLSContext,它依赖于jdk.tls.client.protocols系统属性中的值.从JSSE Reference guide开始:

To enable specific SunJSSE protocols on the client, specify them in a comma-separated list within quotation marks; all other supported protocols are then disabled on the client. For example, if the value of this property is “TLSv1,TLSv1.1”, then the default protocol settings on the client for TLSv1 and TLSv1.1 are enabled on the client, while SSLv3, TLSv1.2, and SSLv2Hello are disabled on the client.

如果此属性为空,则默认情况下在客户端和服务器端都启用所有协议.

请注意,在这两种情况下(JRE 7和8),默认情况下通过SSLContext.getDefault()获得的SSLContext开箱即用,或多或少等同于使用协议TLS获得的SSLContext,并使用默认的truststore参数进行初始化,依此类推.

标签:java,ssl,security,jsse

来源: https://codeday.me/bug/20190923/1815660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值