安全数据通信:究竟什么是JSSE?

在网络上,信息在由源主机到目标主机的传输过程中会经过其他计算机。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易时,网络上的信息有可能被非法分子监听,从而导致个人隐私的泄露。

由于Internet和Intranet体系结构存在一些安全漏洞,总有某些人能够截获并替换用户发出的原始信息。

随着电子商务的不断发展,人们对信息安全的要求越来越高,于是Netscape公司提出了SSL协议,目的为了能在开放网络上安全保密地传输信息。

Java安全套接字扩展(JSSE,Java Secure Socket Extension)为基于SSL和TLS协议的Java网络应用程序提供了Java API以及参考实现。

JSSE支持数据加密、服务器端身份验证、数据完整性以及可选的客户端身份验证。使用JSSE,能保证采用各种应用层协议(比如HTTP、Telnet和FTP等)的客户程序与服务器程序安全地交换数据。

JSSE封装了底层复杂的安全通信细节,使得开发人员能方便地利用它来开发安全的网络应用程序。

下文参考了《Java网络编程核心技术详解》一书的第15章,将结合具体范例来向大家介绍JSSE的用法。

JSSE API 简介

JSSE封装了底层复杂的安全通信细节,使得开发人员能方便地都它来开发安全的网络应用程序。JSSE主要包括四个包:

  • javax.net.ssl包:包括进行安全通信的类,比如SSLServerSocket和SSLSocket类。

  • javax.net包:包括安全套接字的工厂类,比如SSLServerSocketFactory和SSLSocketFactory类。 

  • java.security.cert包:包括处理安全证书的类,如X509Certificate类。X.509是由国际电信联盟(ITU-T)制定的安全证书的标准。

  • com.sun.net.ssl包:包括Oracle公司提供的JSSE的实现类。

JSSE具有以下重要特征:

  • 纯粹用Java语言编写。

  • 可以出口到大多数国家。

  • 提供了支持SSL的JSSE API和JSSE实现。

  • 提供了支持TLS的JSSE API和JSSE实现。

  • 提供了用于创建安全连接的类,如SSLSocket、 SSLServerSocket 和 SSLEngine。

  • 支持加密通信。

  • 支持客户端和服务器端的身份验证。

  • 支持SSL会话。

  • JSSE的具体实现会支持一些常用的加密算法,比如RSA(加密长度2048位)、RC4(密钥长度128位)和DH(密钥长度1024位)。

下面展示了JSSE API的主要类框图。 

JSSE中负责安全通信的最核心的类是 SSLServerSocket 类与SSLSocket 类,它们分别是 ServerSocket 与 Socket 类的子类。SSLSocket 对象由 SSLSocketFactory 创建,此外, SSLServerSocket 的 accept() 方法也会创建 SSLSocket。SSLServerSocket 对象由 SSLServerSocketFactory 创建。SSLSocketFactory 、 SSLServerSocketFactory 以及 SSLEngine 对象都由 SSLContext 对象创建。SSLEngine 类用于支持非阻塞的安全通信。


更多科技资讯请见微信公众号:博文视点Broadview(微信号:bvbooks)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章