首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JSSE中有DTLS实现吗?

在JSSE中有DTLS实现吗?
EN

Stack Overflow用户
提问于 2017-12-21 08:10:49
回答 3查看 5.2K关注 0票数 3

我想在Java中实现一个DTLS1.0客户端,在谷歌一下之后,我发现JSSERefGuide如下所示:

JSSE能够支持SSL版本2.0和3.0以及TLS版本1.0。这些安全协议封装了一个正常的双向流套接字,JSSE API增加了对身份验证、加密和完整性保护的透明支持。 JDK附带的JSSE实现支持SSL3.0、TLS (1.0、1.1和1.2)和DTLS (版本1.0和1.2)。不实现SSL2.0。

所以我想我可以用纯Java实现它,而不用任何库(例如BouncyCastle)。

但是,当我尝试运行(以及其他一些,比如DTLSv1.2,DTLSv1.):

代码语言:javascript
复制
final SSLContext sslContext = SSLContext.getInstance("DTLSv1.0", "SunJSSE");

它抛出:

代码语言:javascript
复制
Exception in thread "main" java.security.NoSuchAlgorithmException: no such algorithm: DTLSv1.0 for provider SunJSSE
at sun.security.jca.GetInstance.getService(GetInstance.java:87)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:199)

例如,以下工作:

代码语言:javascript
复制
final SSLContext sslContext = SSLContext.getInstance("TLSv1.2", "SunJSSE");

列出所有的安全提供者,我发现根本没有DTLS的东西。

那么,实际上有DTLS实现吗?如果是这样的话,你应该怎么用呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-21 10:04:26

文档是正确的,您将得到一个异常,因为没有DTLS协议:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#SSLContext

选择DTLS是在创建套接字的时刻,因为它将是TCP或数据报类型之一。作为开始,它将看起来如下:

代码语言:javascript
复制
DatagramSocket s = new DatagramSocket();
...

final SSLContext sslContext = SSLContext.getInstance("TLSv1.0", "SunJSSE");
sslContext.init(null, yourSSLTrustManager, null);

SSLSocketFactory factory = (SSLSocketFactory)sslContext.getSocketFactory();
SSLSocket daSocket = (SSLSocket) factory.createSocket(s, host, port, false);
票数 2
EN

Stack Overflow用户

发布于 2019-08-15 16:06:25

您可以使用https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/test/jdk/javax/net/ssl/DTLS/DTLSOverDatagram.java (或https://github.com/twosigma/OpenJDK/blob/master/test/jdk/javax/net/ssl/DTLS/DTLSOverDatagram.java,与此相同)

对于因为链接而扼杀我先前答案的人:即使链接中断,这也不是问题--因为在查看链接时,您会很容易地看到DTLSOverDatagram是官方开放的一部分--jdk 11测试--所以即使链接消失了,您也可以很容易地找到其他来源。

虽然这些是DTLS实现的测试,但是很少重构,这可以作为DTLS (udp-)数据报的基础。对于客户机和服务器来说--事实上,它们几乎是一样的。

票数 4
EN

Stack Overflow用户

发布于 2018-03-06 18:45:24

DTLS存在于JavaSE 9:SSLContext算法名中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47920596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档