HTTPS和Java有怎样的关系? _达内广州web培训

广州web培训
达内广州五羊中心

18589266248

热门课程

HTTPS和Java有怎样的关系?

  • 时间:2016-11-08 14:18
  • 发布:广州web培训
  • 来源:开源中国

HTTPS协议是一套完善的标准,它能确保网络连接的安全。要理解这套协议如何运作并非难事,而对应的RFC文档早在2000年就有了。

尽管HTTPS的应用已经如此广泛,你仍然可以遇到一些软件并不对这套协议进行处理,因为它们觉着没必要。不幸的是我曾在使用一种语言实现认证系统融合的过程中碰到过这种问题,它本不应该让我感到如此惊讶的。它就是Java。

HTTPS是如何工作的?

达内广州web培训先讲讲融合的认证系统是如何运作的。HTTPS协议使用了TLS/SSL协议来确保连接的安全。TLS/SSL协议对认证的握手环节进行了定义,这个环节能让服务器以一种安全的方式连接到客户端。在握手期间会执行如下几个步骤:

客户端发送消息开始进行连接。

服务端将证书发送给客户端。

客户端使用由受信任的机构签发的证书来对服务端发送的证书进行验证。

服务端发送请求,要求客户端提供证书。

客户端将它的证书发送给服务端。

服务端对客户端发送过来的证书进行验证。

服务端和客户端交换主密钥,它会在数据的加密过程中被用到。

连接建立。

我与团队伙伴一道尝试用Java实现HTTPS客户端。结合我们关于TLS/SSL握手的知识以及使用curl进行手工测试的经验,我们认为要实现这个客户端只需要三个文件: 一个客户端证书,一个客户端私钥以及一个能对服务端证书进行验证的受信任的证书。

好吧,其实我们想错了。

Java:问题,解决方案,以及为什么如此麻烦

因为每天都使用融合认证这样的做法并不通用,因此我们向这个世界上最好的资源寻求帮助。初看起来Google大叔提供的结果并没有显露这个实现背后的复杂性,而且每次查看的搜索结果都在将我们引向越来越令人心烦意乱的解决方案(有些可以追溯到上个世纪90年代)。更糟糕的是我们还的用到Apache的HttpComponents来实现连接,但是大多数建议使用的方案都是基于纯Java原生库的。

达内广州web培训要说的是java有如下几点:

Java不能直接对任何证书或者私钥进行使用(像curl那样)。

Java需要使用单独的文件(Java Keystore文件),它可以包含原来的证书和密钥。

我们需要一个受信任的keystore文件,里面有服务端对每次HTTS连接进行证书验证时需要的证书。

上一篇:HTTPS和Java如何融合?
下一篇:JS全局命名空间污染代码书写规范

马上预约三天免费体验课

姓名:

电话:

你需要了解的搜索功能

达内广州web培训详解http缓存和cookie

达内广州web培训详解缓存Websql

达内广州web培训详解缓存indexDB

选择城市和中心
贵州省

广西省

海南省