博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Tomcat SSL 服务端/客户端双向认证(一)
阅读量:6425 次
发布时间:2019-06-23

本文共 2327 字,大约阅读时间需要 7 分钟。

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年推出首版,时,推出协议,以SSL进行加密,这是SSL的起源。将SSL进行标准化,1999年公布了第一版TLS标准文件。随后又公布了 (2008年8月)与  (2011年3月)。在、、、、等应用程序中,广泛支持这个协议。主要的网站,如、等也以这个协议来创建安全连接,发送数据。目前已成为上保密通讯的工业标准。

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

二、双向认证

    1、客户端认证。

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

    2、服务器端认证。

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

三、证书制作 

相关连接:

基本逻辑:

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

你可能感兴趣的文章
如何理解LXC与Docker之间的主要区别
查看>>
APP测试的新篇章
查看>>
Git小结
查看>>
orm2 中文文档 3.3 模型钩子
查看>>
Flask学习
查看>>
你真的会使用XMLHttpRequest吗?
查看>>
【数据可视化】艺术——图表的选择(上)
查看>>
Android换肤技术总结
查看>>
Mysql日志分析
查看>>
如何编写一个独立的 PHP 扩展(译)
查看>>
webview中嵌入部分html5适配的小方法~
查看>>
阿里云分析引擎Spark On 多数据源介绍
查看>>
iOS Video(视频)
查看>>
Spark中Task,Partition,RDD、节点数、Executor数、core数目的关系
查看>>
C#与C++的发展历程第三 - C#5.0异步编程巅峰
查看>>
React-Native windows环境搭建记录
查看>>
用iPhone一秒拍摄3D照片,Facebook这项技术厉害了
查看>>
HTML标记语言——表格的基本结构
查看>>
数据中心机房UPS供电系统的全新安全及节能技术设计
查看>>
windows 7 的防火墙设置
查看>>