`

SSL(Secure Sockets Layer 加密套接字协议层)安全认证

    博客分类:
  • web
 
阅读更多
SSL(Secure Sockets Layer 加密套接字协议层)

SSL是一个安全协议,它提供使用TCP/IP的通信应用程序间的隐私与完整性。因特网的超文本传输协议(HTTP)使用SSL来实现安全的通信。

基本逻辑:
1、生成服务端密钥库并导出证书;(生成server.jks文件服务器需要识别
2、生成客户端密钥库并导出证书;(生成custom.p12文件
3、根据客户端密钥库生成客户端信任的证书;(将custom.p12文件生成custom.cer文件
4、将客户端证书导入服务端密钥库;(将custom.cer文件导入server.jks文件
5、将服务端证书导入浏览器。(将server.jks文件生成server.cer文件浏览器需要识别

一.tomcat6配置双向认证

1、生成服务器端证书
X:\>keytool -genkey -keyalg RSA -dname "cn=127.0.0.1,ou=sango,o=none,l=china,st=beijing,c=cn" 
-alias server -keypass password -keystore d:\server.jks -storepass password -validity 3650 

强调:服务端的CN值必须为域名,不然客户端认证时为非法。

2、生成客户端证书
X:\>keytool -genkey -keyalg RSA -dname "cn=sango,ou=sango,o=none,l=china,st=beijing,c=cn"
 -alias custom -storetype PKCS12 -keypass password -keystore d:\custom.p12 
-storepass password -validity 3650   

客户端的CN可以是任意值。

3、由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,我们

(1)必须先把客户端证书导出为一个单独的CER文件,使用如下命令,先把客户端证书导出为一个单独的cer文件:
X:\>keytool -export -alias custom -file d:\custom.cer -keystore  d:\custom.p12 -storepass password -storetype PKCS12 -rfc 


(2)然后,添加客户端证书到服务器中(将已签名数字证书导入密钥库)将客户端cer文件导入到tomcat可以识别的文件.jks文件
X:\>keytool -import -v -alias custom -file d:\custom.cer -keystore  d:\server.jks -storepass password  

(3)从服务器证书库中导出服务器证书(把server.cer文件导入到浏览器中才不会报证书错误)浏览器需要识别服务器cer文件
keytool -export -v -alias server -keystore d:\server.jks -storepass password -rfc -file d:server.cer

4、查看证书详细(-v)内容
keytool -list -v -keystore d:\server.jks -storepass password  


5、配置Tomcat service.xml文件
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"  maxThreads="150" scheme="https" secure="true"  
clientAuth="true" sslProtocol="TLS"  
keystoreFile="D:/server.jks" keystorePass="password"
truststoreFile="D:/server.jks" truststorePass="password"  /> 


不设置truststoreFile,truststorePass属性,即默认指向"%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS"文件(JKS类型),则在双向认证中,需把客户端认证导入到此

文件中.
clientAuth=”true”表示双向认证  浏览器必须导入p12文件否则看不到登录页面

将tomcat的protocol参数由"HTTP/1.1"改成"org.apache.coyote.http11.Http11Protocol"

6、导入客户端证书到浏览器
双向认证需要强制验证客户端证书。双击“custom.p12”即可将证书导入至IE中。 在生成服务器端证书中的cn=127.0.0.1必须用这个ip不然会说证书错误。

安装证书时需要选择 将证书放入下列存储 然后点击 受信任的根证书





访问时必须:hppts://127.0.0.1:80/xxxx的形式  即使是80也需要加上而不能去掉

二.tomcat6配置单向认证

1、生成服务器端证书
X:\>keytool -genkey -keyalg RSA -dname “cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn”
-alias server -keypass password -keystore d:\server.jks -storepass password -validity 3650 

2、从服务器证书库中导出服务器证书(把server.cer文件导入到浏览器中才不会报证书错误)
keytool -export -v -alias server -keystore d:\server.jks -storepass 123456 -rfc -file d:server.cer

3、由于是单向认证,没有必要生成客户端的证书,直接进入配置tomcat service.xml文件,Xml代码
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" 
maxThreads="150" scheme="https" secure="true" 
clientAuth="false" sslProtocol="TLS" 
keystoreFile="D:/server.jks" keystorePass="password"/>


clientAuth="false"表示单向认证,同时去掉服务端的可信任认证,即:truststoreFile="D:/server.jks" truststorePass="password"这2个属性。

单向认证只需要把服务端的认证导入浏览器即可,而双向认证则需要安装用户的.p12文件和服务端认证。

当使用双向认证时可以在后台获得证书(注意是双向认证clientAuth=”true”时才能得到):
X509Certificate[] certs = (X509Certificate[]) req.getAttribute("javax.servlet.request.X509Certificate");
		System.out.println(certs[0].getSigAlgName());

参考:http://www.blogjava.net/algz/articles/345601.html
http://www.blogjava.net/icewee/archive/2012/06/04/379947.html
  • 大小: 46.9 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    解决SQLSERVER数据库驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接问题JAR包

    在SQLSERVER数据库的使用过程中,有时会出现一个棘手的问题,即驱动程序无法通过安全套接字层(SSL)加密与SQL Server建立安全连接。这个问题通常表明数据库连接在尝试使用SSL进行加密时遇到了障碍,可能影响数据的...

    第7章 安全套接层协议(SSL).pptx

    【第7章 安全套接层协议(SSL)】 SSL(Secure Sockets Layer)是互联网上广泛使用的安全协议,主要用于确保网络通信的安全性和隐私性。它位于网络会话层,为上层应用如HTTP提供加密和认证服务。SSL协议由两部分组成...

    Linux 网络编程:加密通讯协议 SSL 编程

    在当今的网络安全领域,加密通讯协议SSL(Secure Sockets Layer,安全套接层)扮演着至关重要的角色。SSL协议能够为基于IP层的网络通讯提供加密和认证服务,保障数据传输的安全性,防止被窃听或篡改。在Linux环境下...

    secureSockets:TCP的加密套接字

    6. **加密套接字的使用**: 一旦创建了安全套接字,就可以像普通TCP套接字一样进行读写操作,但所有的数据都将自动加密和解密。 在实际应用中,你可能会遇到以下场景: - **HTTPS服务器**: Web服务器通过SSL/TLS...

    第7章安全套接层协议(SSL).pptx

    安全套接层(Secure Sockets Layer,简称SSL)是一种广泛使用的网络安全协议,它位于网络会话层,旨在为互联网上的通信提供安全性和隐私性。SSL协议主要包含两个子协议:SSL握手协议和SSL记录协议。SSL协议通过提供...

    SQLSERVER客户端通过SSL安全服务成功建立安全连接JAR程序包

    SSL(Secure Sockets Layer)加密技术就是一种保障这种安全性的常用手段。在本主题中,我们将深入探讨如何通过Java(Java Archive,简称JAR)程序包实现SQLSERVER客户端与服务器之间的SSL安全连接。 首先,理解SSL...

    流式套接字实现简单的客户端服务端通信过程

    - TCP本身不提供加密,但可以与SSL/TLS结合使用,形成安全套接字层(Secure Sockets Layer,SSL)或传输层安全(Transport Layer Security,TLS),以保护数据传输的安全性。 通过以上步骤,我们可以理解并实现...

    解决无法通过SSL加密无法与SQLsever产生连接的两个包

    SSL(Secure Sockets Layer)和其后继者TLS(Transport Layer Security)是实现这种安全性的主要手段,它们为网络通信提供了加密和身份验证。本文将详细讨论在与SQL Server建立SSL加密连接时遇到的问题以及解决方案...

    安全套接层协议.pptx

    安全套接层(Secure Sockets Layer,简称SSL)是一种广泛使用的网络安全协议,主要用于在互联网上实现安全的通信。SSL协议工作在网络会话层,即TCP/IP协议栈的第四层,旨在为应用层协议(如HTTP)提供加密传输和身份...

    SSL安全协议(中文版)

    SSL(Secure Sockets Layer)安全套接层是网络通信中的一种标准协议,它为互联网上的数据传输提供了加密和身份验证机制。SSL协议是网络安全领域的基石,广泛应用于电子商务、在线银行和其他涉及敏感信息交换的场景。...

    SSL加密技术学习总结

    SSL全称为“安全套接字层”,由Netscape公司在1990年代初开发,其后演变为TLS(Transport Layer Security)协议,现在通常所说的SSL实际上是指SSL和TLS的统称。SSL的主要功能是为网络通信提供加密处理,确保数据在...

    实现Linux系统的SSL安全代理.pdf

    SSL(Secure Sockets Layer,安全套接字层)协议是Internet上进行信息发布和电子商务活动所使用的主要安全通信协议之一,也是Web传输中使用最广泛的实现密码学协议。SSL协议使用不同的密码技术的组合提供网络传输...

    ssl协议

    SSL(Secure Sockets Layer,安全套接字层)协议是一种广泛使用的网络安全协议,它为互联网上的数据传输提供了加密和身份验证机制。SSL协议是互联网安全的基础,尤其在电子商务、在线银行和其他涉及敏感信息交换的...

    基于SSL的身份认证和访问控制实现原理.pdf

    SSL(Secure Sockets Layer,安全套接层)是一种广泛使用的网络协议,它为数据通信提供了加密和身份验证的功能,以保证互联网上数据传输的安全性。基于SSL的身份认证和访问控制是网络信息安全领域中的重要技术,它...

    IO-Socket-SSL-0.999.tar.gz_SSL SOCKET_ssl

    "IO-Socket-SSL-0.999.tar.gz"是一个与SSL(Secure Sockets Layer)套接字相关的压缩包,用于在Socket通信中提供安全的数据传输。SSL是网络安全传输层的一个标准,通常用于HTTPS、SMTPS等协议,以确保数据在互联网上...

    JAVA RMI 传输 SSL加密

    为了提高RMI通信的安全性,我们可以使用SSL (Secure Sockets Layer) 或其后继者TLS (Transport Layer Security) 进行加密。SSL加密确保了数据在传输过程中不被窃取或篡改,这对于处理敏感信息如JMX (Java Management...

    JAVA环境下基于SSL的加密通信.pdf

    SSL(Secure Sockets Layer,安全套接层)协议是其中最为常见的一种。在Java环境中,通过Java Secure Socket Extension(JSEE)的引入,可以高效地实现基于SSL的加密通信。 SSL协议的核心目的是为网络通信提供安全...

Global site tag (gtag.js) - Google Analytics