当前位置: 首页 > news >正文

Java Tomcat SSL 服务端/客户端双向认证(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、什么是SSL

    SSL (Secure Sockets Layer) is a standard security technology for establishing an encrypted link between a server and a client—typically a web server (website) and a browser, or a mail server and a mail client (e.g., Outlook).

    

传输层安全协议(英语:Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器,网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999年公布了第一版TLS标准文件。随后又公布了 RFC 5246(2008年8月)与 RFC 6176 (2011年3月)。在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛支持这个协议。主要的网站,如Google、Facebook等也以这个协议来创建安全连接,发送数据。目前已成为互联网上保密通讯的工业标准。

SSL包含记录层(Record Layer)和传输层,记录层协议确定了传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

二、双向认证

    1、客户端认证。

        客户端通过浏览器访问某一网站时,如果该网站为HTTPS网站,浏览器会自动检测系统中是否存在该网站的信任证书,如果没有信任证书,浏览器一般会拒绝访问,IE会有一个继续访问的链接,但地址栏是红色,给予用户警示作用,即客户端验证服务端并不是强制性的,可以没有服务端的信任证书,当然是否继续访问完全取决于用户自己。如何去除地址栏的红色警告呢?后续会介绍导入服务端证书到浏览器的方法。

    2、服务器端认证。

        服务端需要获取到客户端通过浏览器发送过来的认证证书,该证书在服务端的证书库中已存在,仅仅是个匹配过程,匹配成功即通过认证,可继续访问网站资源,反之则无法显示网页

三、证书制作 

相关连接:http://www.cnblogs.com/xdp-gacl/p/3750965.html

基本逻辑:
1、生成服务端密钥库并导出证书;
2、生成客户端密钥库并导出证书;
3、根据服务端密钥库生成客户端信任的证书;
4、将客户端证书导入服务端密钥库;
5、将服务端证书导入浏览器。

注意:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意。

使用java自带keytool生成密钥库和证书:

1、生成服务器证书库
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore S:\ssl\server.keystore -dname "CN=127.0.0.1,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456

2、生成客户端证书库

keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore S:\ssl\client.p12 -dname "CN=client,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456

3、从客户端证书库中导出客户端证书
keytool -export -v -alias client -keystore S:\ssl\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file S:\ssl\client.cer

keytool -export -v -alias client -keystore S:\ssl\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file S:\ssl\client.crt

4、从服务器证书库中导出服务器证书

keytool -export -v -alias server -keystore S:\ssl\server.keystore -storepass 123456 -rfc -file S:\ssl\server.cer

5、生成客户端信任证书库(由服务端证书生成的证书库生成,后面会用到这个文件)

keytool -import -v -alias server -file S:\ssl\server.cer -keystore S:\ssl\client.truststore -storepass 123456

6、将客户端证书导入到服务器证书库(使得服务器信任客户端证书)

keytool -import -v -alias client -file S:\ssl\client.cer -keystore S:\ssl\server.keystore -storepass 123456

最后创建的文件如下:

转载于:https://my.oschina.net/zhengweishan/blog/775322

相关文章:

  • vue3中 setup注意点
  • redis简介
  • 《Spark GraphX in Action》书评及作者访谈
  • vue3的 computed 计算属性 与 watch监听
  • Diomidis Spinellis:有效的调试
  • ListView的简单使用
  • vue3技术 watch时 value问题
  • 最大流学习笔记(1)
  • vue3 watchEffect 函数
  • Apaceh 多虚拟主机多站点配置两种方案
  • ubutnu安装geany
  • vue3生命周期钩子函数
  • 每天一个linux命令(11):nl命令
  • ABP文档 - 本地化
  • react-native 安卓真机环境搭建
  • docker容器内的网络抓包
  • es6(二):字符串的扩展
  • JAVA多线程机制解析-volatilesynchronized
  • Java-详解HashMap
  • Promise初体验
  • scala基础语法(二)
  • spring boot 整合mybatis 无法输出sql的问题
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Zepto.js源码学习之二
  • 阿里云Kubernetes容器服务上体验Knative
  • 开源SQL-on-Hadoop系统一览
  • 小程序button引导用户授权
  • 学习使用ExpressJS 4.0中的新Router
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​渐进式Web应用PWA的未来
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #pragma预处理命令
  • (31)对象的克隆
  • (vue)页面文件上传获取:action地址
  • (定时器/计数器)中断系统(详解与使用)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • ./configure,make,make install的作用
  • .equals()到底是什么意思?
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net FrameWork简介,数组,枚举
  • .Net FrameWork总结
  • .net mvc 获取url中controller和action
  • .net 反编译_.net反编译的相关问题
  • .net访问oracle数据库性能问题
  • .skip() 和 .only() 的使用
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [20171113]修改表结构删除列相关问题4.txt
  • [Android]Tool-Systrace
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [bzoj1038][ZJOI2008]瞭望塔
  • [BZOJ3757] 苹果树