Java安全之SSL/TLS

在前面所讲到的一些安全技术手段如:消息摘要、加解密算法、数字签名和数据证书等,一般都不会由开发者直接地去使用,而是经过了一定的封装,甚至形成了某些安全协议,再暴露出一定的接口来供开发者使用。因为直接使用这些安全手段,对开发者的学习成本太高,需要深入了解底层实现才行,而直接使用封装后暴露出来的接口就容易多了。 在这些封装与协议的背后,很多都使用到了SSL/TSL协议,其中最常见的HTTP
摘要由CSDN通过智能技术生成

   在前面所讲到的一些安全技术手段如:消息摘要、加解密算法、数字签名和数据证书等,一般都不会由开发者直接地去使用,而是经过了一定的封装,甚至形成了某些安全协议,再暴露出一定的接口来供开发者使用。因为直接使用这些安全手段,对开发者的学习成本太高,需要深入了解底层实现才行,而直接使用封装后暴露出来的接口就容易多了。

   在这些封装与协议的背后,很多都使用到了SSL/TSL协议,其中最常见的HTTPS就是在HTTP协议的基础上加入了SSL/TLS协议形成的,来保障Web访问安全性。SSL/TLS协议包含两个协议:SSL(Secure Socket Layer,安全套接字层)和TLS(Transport Layer Security,传输层安全)协议。SSL由Netscape公司研发,位于TCP/IP参考模型中的网络传输层,作为网络通讯提供安全及数据完完整性的一种安全协议。TLS是基于SSL协议之上的通用化协议,它同样位于TCP/IP参考模型中的网络传输层,作为SSL协议的继承者,成为下一代网络安全性与数据完整性安全协议。

   SSL/TLS协议的具体实现与细节肯定是很复杂的,可以百度一下慢慢了解,下面主要列举一下Java中经常遇见的与SSL/TLS有关的情况:

一、Tomcat中HTTPS协议的配置

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS" 
			   keystoreFile="conf/serverKeyStore.jks"
			   keystorePass="gitblit"
			   truststoreFile="conf/caKeyStore.p12"
			   truststorePass="gitblit"
			   truststoreType="pkcs12"/>


属性解释:
port:协议监听端口号
protocol: 协议实现类
maxThreads: 最大线程数
SSLEnabled,scheme,secure,sslProtocol:基本上是固定配置
keystoreFile:服务器KeyStore文件路径
keystorePass:服务器KeyStore密码
clientAuth:是否验证客户端
truststoreFile:服务器信任KeyStore文件路径
truststorePass:服务器信任KeyStore密码
truststoreType:服务器信任KeyStore类型,如不指定,默认为jks

   在服务器KeyStore文件中最好只有一个条目,当然条目为KeyEntry类型,因为在该配置中无法配置被用于安全通信的条目别名,如果有多个条目的话,服务器会任意选行一个条目,就会造成所使用条目不确定的情况。服务器信任KeyStore中存储的条目是CertificateEntry类型,正确情况下里面只存储了服务器信任的证书。一般说来这些证书都是有一根证书颁发给客户端使用的,而这个根证书肯定是服务器所有的,所以服务器信任KeyStore中最好只存储一个为客户端颁发证书的根证书,这样只要信任了该根证书,也就会信任该根证书颁发的所有证书,利于添加新的客户端。当然还有一种更笨的做法就是将根证书颁发给客户端使用的证书全部添加到服务器信任KeyStore文件中。如果clientAuth配置为false,即单向认证,只认证服务端而不,而不认证客户端,那么,truststoreFile,truststorePass,truststoreType这几个属性是用不上的,可不配置。

二、SSLSocket的使用

package com.xtayfjpk.security.jsse;

import java.io.FileInputStream;
import java
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值