1 SSL(Server Socket Layer)简介
在网络上信息在源-宿的传递过程中会经过其它的计算机。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐私的泄露。由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。随着网上支付的不断发展,人们对信息安全的要求越来越高。因此Netscape公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的,这种协议在WEB上获得了广泛的应用。 之后IETF(ietf.org)对SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。
2 SSL工作原理
SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https://ip:port/的方式来访问。当我们与一个网站建立https连接时,我们的浏览器与Web Server之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。具体过程如下:
用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。
服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。
客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。如果成功,那么继续。客户端浏览器为本次会话生成pre-master secret,并将其用服务器公钥加密后发送给服务器。如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。
如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。如果不在信任列表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的pre-master secret,并用它通过某些算法生成本次会话的master secret。
客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。
服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。
本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
3.用到的软件包
Tomcat 6.0.8
用途:Web Server。
JSSE (jdk1.4以上版本包含有)
用途:用来产生Tocmcat使用的秘钥对(keystore)。
Openssl
用途:用来产生CA证书、签名并生成IE可导入的PKCS#12格式私钥。
下载:http://www.openssl.org/
4 配置Tomcat 4.x 使用SSL
先建立工作目录
mkdir root
1.生成CA证书目前不使用第三方权威机构的CA来认证,自己充当CA的角色
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out root/root-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out root/root-req.csr -key root/root-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey
root/root-key.pem -days 3650
4.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in root/root-cert.pem -inkey
root/root-key.pem -out root/root.p12
2.生成server证书
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out server/server-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out server/server-req.csr -key server/server-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey
server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
4.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey
server/server-key.pem -out server/server.p12
3.生成client证书
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out client/client-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out client/client-req.csr -key client/client-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey
client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
4.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey
client/client-key.pem -out client/client.p12
4.根据root证书生成jks文件
C:\OpenSSL\apps\root>keytool -import -v -trustcacerts -storepass password -alias root -file root-cert.pem
-keystore root.jks
5.配置tomcat ssl,修改conf/server.xmltomcat6中多了SSLEnabled="true"属性
keystorefile, truststorefile设置为你正确的相关路径
xml 代码
- <connector secure="true" scheme="https" protocol="HTTP/1.1" port="8443"
- sslenabled="true" maxhttpheadersize="8192" maxthreads="150"
- minsparethreads="25" maxsparethreads="75" enablelookups="false"
- disableuploadtimeout="true" acceptcount="100" sslprotocol="TLS"
- clientauth="true" keystorefile="d:/path/bin/x509/server.p12"
- keystoretype="PKCS12" keystorepass="123456" truststorefile="d:/path/bin/x509/root.jks"
- truststoretype="JKS" truststorepass="123456"/>
6.将root.p12,client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)
root.p12导入至受信任的根证书颁发机构,client.p12导入至个人
7.访问你的应用http://ip:8443,如果配置正确的话会出现请求你数字证书的对话框
8.在jsp中取得符合x.509格式的证书
java 代码
- <%
- //获得certificate chain
- X509Certificate[] ca=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");
- if(ca==null)
- {
- out.println("No cert info!");
- } else {
- String serial=ca[0].getSerialNumber().toString();
- String DN=ca[0].getSubjectDN().toString();
- }
- %>
分享到:
相关推荐
总结,Tomcat下的SSL双向认证是通过配置Keystore、Truststore,修改Tomcat的服务器配置,并确保客户端正确配置来实现的。这一过程增强了服务器与客户端之间的通信安全性,对于保护敏感数据传输尤其重要。
通过 Tomcat 实现 SSL 双向认证 Tomcat 是一个流行的开源 Web 服务器,它支持 SSL/TLS 加密协议来确保数据传输的安全性。SSL 双向认证是一种高级的身份验证机制,它需要同时配置 Web 服务器证书和客户端证书,并在...
这是我实战的笔记,全程直播。 #### Tomcat和Openssl构建HTTPS双向认证 ###### ...二、tomcat实现双向认证 1、创建服务器信任的CA证书库 2、配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书)
本文将详细介绍如何在 Tomcat 中实现 SSL 双向认证,包括使用 JDK 的 keytool 工具创建证书、配置 Tomcat 服务器和客户端证书等。 一、SSL 双向认证的重要性 在 Web 应用程序中,安全性是非常重要的,特别是在涉及...
本文将深入探讨如何在Tomcat6中实现SSL双向认证,包括证书的生成、配置以及应用。 ### 一、CA证书生成 #### 1. 私钥生成 首先,通过OpenSSL工具生成一个私钥。在命令行中执行以下命令: ```bash C:\OpenSSL\bin>...
### Tomcat配置SSL双向认证详解 #### 一、SSL双向认证概述 SSL(Secure Sockets Layer,安全套接层)是一种用于确保Web通信安全的技术,它通过加密数据传输来保护信息不被未授权访问。SSL协议的核心是实现客户端与...
3. **配置文件修改**:将生成的`server.keystore`文件放置在Tomcat的指定目录下,并更新`server.xml`配置文件以使用这个证书。 4. **客户端配置**:在客户端浏览器上安装证书,使其能够识别并接受来自服务器的SSL...
个人学习笔记,markdown风格,记录Tomcat双向认证SSL证书的过程
本资源是一个 CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证配置示例。详细如何配置请参考博客《图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证》,地址是:...
Apache Tomcat配置SSL双向认证是实现安全通信的重要步骤,尤其对于需要高度安全性的Web应用程序。在本文中,我们将深入探讨如何在Tomcat 6环境中设置SSL双向认证,确保客户端和服务器之间的通信既加密又经过身份验证...
在Tomcat服务器上,需要配置SSL/TLS协议,以便实现双向认证。需要在Tomcat的配置文件中添加SSL/TLS协议的支持,并将生成的证书文件导入到Tomcat中。 双向认证 在配置完成后,可以使用双向认证来验证Tomcat服务器的...
在这个场景中,我们将探讨如何在Tomcat 6和5.5版本中配置SSL双向认证,并使用openssl工具生成必要的密钥文件。 **一、生成CA证书** 创建一个自签名的根证书颁发机构(Root CA)是SSL双向认证的第一步。这可以通过...
在IT行业中,安全通信是至关重要的,特别是...通过上述步骤,你可以在Tomcat上实现一个完整的SSL双向认证环境,并利用Java和Apache HttpClient进行安全的通信。这个过程对于理解网络安全和提高应用安全性具有重要意义。
本文主要介绍如何在Linux平台上,使用Apache Tomcat、OpenSSL以及Java Keytool来实现HTTPS通信,并进一步完成双向认证的功能。文章假设读者具备基本的Linux操作技能以及对Tomcat有一定的了解。 #### 环境配置 - **...
标题中的“Tomcat的双向SSL配置”涉及到的是网络通信安全领域的一个重要概念,即Transport Layer Security(传输层安全)协议的双向身份验证。在传统的SSL/TLS连接中,服务器通常被验证,但客户端的身份可能不被确认...
标题中的“Apache 2 mod_jk tomcat 5 双向SSL认证 传递证书信息”涉及到的是在Web服务器(Apache)与应用服务器(Tomcat)之间建立安全通信的配置。这个配置主要是为了实现更高级别的安全性,即双方都需要验证彼此的...