https单向/双向认证及tomcat配置https方法
tomcat6配置:
1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源
2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址
如果只是加密,单向就行
如果想要用系统的人没有证书就访问不了系统的话,就采用双向
命令格式:
输入名字、组织单位、组织、市、省、国家等信息
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 1024 -dname "CN=localhost, OU=Organization, O=Company Name, L=City, S=State, C=US" -validity 365 -keystore e:/tomcat.keystore
单向配置:
第一步:为服务器生成证书
使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“C:\OctopusStoreKey\SP2014.keystore”,口令为“123456”,使用如下命令生成:
keytool -genkey -v -alias SPClient -keyalg RSA -validity 3650 -keystore c:\OctopusStoreKey\SP2014.keystore
或
keytool -genkey -v -alias SPClient -keyalg RSA -validity 3650 -keystore c:\OctopusStoreKey\SP2014.keystore -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 123456 -keypass 123456
生成安全证书文件
这个SP2014CA.cer是为了解决不信任时要导入的
keytool -export -alias SP0200 -file c:\OctopusStoreKey\SP2014CA.cer -keystore c:\OctopusStoreKey\SP2014.keystore -validity 3650
然后输入c:\OctopusStoreKey\SP2014.keystore 中的keystore密码
或
keytool -export -alias tomcat -keystore c:\tomcat.keystore -file c:\tomcat.cer -storepass password
打开Tomcat 根目录下的 /conf/server.xml ,找到如下配置段,修改如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="c:\OctopusStoreKey\SP2014.keystore" keystorePass="123456" >
注意:protocol里面的值,如果用http 1.1,那么https的链接就会打不开
需要在应用程序的web.xml可以加上这句话
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
然后启动tomcat,输入 https://localhost:8443/
这时打开会弹出一个提示框:证书不可信任,有一个警告,说什么需要机构颁发。直接导入SP2014CA.cer即可
双向配置:
第一步:为服务器生成证书
使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“C:\OctopusStoreKey\SP2014.keystore”,口令为“123456”,使用如下命令生成:
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 1024 -dname "CN=localhost, OU=Organization, O=Company Name, L=City, S=State, C=US" -validity 365 -keystore e:/tomcat.keystore
或
keytool -genkey -v -alias SPClient -keyalg RSA -validity 3650 -keystore c:\OctopusStoreKey\SP2014.keystore -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 123456 -keypass 123456
第二步:为客户端生成证书
下一步是为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用如下命令生成:
keytool -genkey -v -alias SP0200 -keyalg RSA -storetype PKCS12 -keystore c:\OctopusStoreKey\SP2014.p12(SP0200为自定义)。
或
keytool -genkey -v -alias SP0200 -keyalg RSA -storetype PKCS12 -validity 3650 -keystore c:\OctopusStoreKey\SP2014.p12 -dname "CN=SP0200,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 123456 -keypass 123456
双击SP2014.p12文件,即可将证书导入至浏览器(客户端)。
第三步:让服务器信任客户端证书
由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令:
keytool -export -alias SP0200 -keystore c:\OctopusStoreKey\SP2014.p12 -storetype PKCS12 -storepass 123456 -rfc -file C:\OctopusStoreKey\SP2014SubCA.cer
(SP0200为自定义与客户端定义的SP0200要一致,password是你设置的密码)。通过以上命令,客户端证书就被我们导出到“C:\OctopusStoreKey\SP2014SubCA.cer”文件了。
下一步,是将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:
keytool -import -v -file C:\OctopusStoreKey\SP2014SubCA.cer -keystore C:\OctopusStoreKey\SP2014.keystore
通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:
keytool -list -keystore C:\OctopusStoreKey\SP2014.keystore
第四步:配置Tomcat 服务器
打开Tomcat 根目录下的 /conf/server.xml ,找到如下配置段,修改如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="C:\OctopusStoreKey\SP2014.keystore" keystorePass="123456"
truststoreFile="C:\OctopusStoreKey\SP2014.keystore" truststorePass="123456"/>
(SP2014要与生成的服务端证书名一致)
属性说明:
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
keystoreFile:服务器证书文件路径
keystorePass:服务器证书密码
truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书
truststorePass:根证书密码
应用程序的web.xml可以加上这句话:
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <!-- Require HTTPS for everything except /img (favicon) and /css. --> <security-constraint> <web-resource-collection> <web-resource-name>HTTPSOrHTTP</web-resource-name> <url-pattern>*.ico</url-pattern> <url-pattern>/img/*</url-pattern> <url-pattern>/css/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint>
测试
在浏览器中输入:https://localhost:8443/,会弹出选择客户端证书界面,点击“确定”,会进入tomcat主页,地址栏后会有“锁”图标,表示本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。
相关推荐
综上所述,这个主题涵盖了Java安全、SSL/TLS协议、keytool的使用方法、Tomcat的SSL配置以及单向和双向认证的概念。学习和掌握这些知识对于进行安全的Web服务部署和管理至关重要。在实际操作时,务必注意证书的有效期...
Tomcat配置SSL单向认证时,主要步骤包括: 1. 获取并安装SSL证书:可以是自签名证书或者由权威CA(证书颁发机构)签发的证书。 2. 在`server.xml`配置文件中配置`<Connector>`元素,指定`scheme="https"`, `secure=...
Tomcat作为流行的Java Servlet容器,提供了支持HTTPS协议的能力,这包括了单向认证(也称为服务器认证)和双向认证(也称为客户端认证)。这两种认证机制都是基于SSL(Secure Sockets Layer)和TLS(Transport Layer...
标题中的“Tomcat配置HTTPS单项认证”涉及到的是在Apache Tomcat服务器上设置安全套接层(SSL)以实现HTTPS通信的过程,尤其是关于单向认证(也称为客户端认证)的配置。在互联网上,HTTPS是HTTP协议的安全版本,...
本文将详细介绍如何在 Tomcat 中实现 SSL 双向认证,包括使用 JDK 的 keytool 工具创建证书、配置 Tomcat 服务器和客户端证书等。 一、SSL 双向认证的重要性 在 Web 应用程序中,安全性是非常重要的,特别是在涉及...
本文将详细阐述如何使用Tomcat服务器配置HTTPS双向认证的过程。 首先,需要明确什么是HTTPS双向认证。HTTPS双向认证是指客户端与服务器在通信过程中,双方都要进行身份验证。也就是说,不仅服务器需要验证客户端的...
6. **SSL握手过程**:在SSL双向认证中,握手过程比单向认证复杂,包括了服务器发送其证书,客户端验证服务器证书并发送自己的证书,服务器验证客户端证书等步骤。 7. **安全性提升**:双向认证能有效防止中间人攻击...
标题中的“Apache 2 mod_jk tomcat 5 双向SSL认证 传递证书信息”涉及到的是在Web服务器(Apache)与应用服务器(Tomcat)之间建立安全通信的配置。这个配置主要是为了实现更高级别的安全性,即双方都需要验证彼此的...
- 更多关于Java实现SSL双向认证的信息可参考:“java实现SSL双向认证”。 3. **OpenSSL命令行测试**: - 使用`OpenSSL`命令行工具直接连接到`Tomcat`服务器,以测试SSL双向验证过程。 ```bash openssl s_client...
Tomcat 7配置SSL双向认证需要用到Java提供的Keytool工具,Keytool是一个用于管理和创建密钥库(keystore)的命令行工具,其中包含了密钥实体(私钥和公钥)和可信任的证书实体(公钥)。以下是配置SSL双向认证的步骤...
不同于传统的单向认证,双向认证不仅要求服务器向客户端证明自己的身份,同时也要求客户端向服务器证明其身份。这种模式在一些高安全性的应用场景,如金融、医疗等领域中尤为常见。 1. **生成服务器证书** 使用JDK...
在Java的Web应用服务器Tomcat中,为了增强通信的安全性,常常会采用SSL(Secure Sockets Layer)协议进行数据传输,而SSL中的双向认证(Mutual TLS)则是一种更为严谨的安全策略。本教程将详细讲解如何在Tomcat中...
实现双向认证需要客户端也有自己的证书,并且服务器需要配置以信任这个客户端证书。 总结来说,这个教程将涵盖使用TLS/SSL和单向认证来增强API安全性,以及如何在Java Web服务器和Spring Boot应用中配置这些设置。...
此外还有单向认证和双向认证的区别,后者要求客户端也需要进行认证。 2. **CAS服务端**:负责用户的认证、ticket的生成和验证等核心功能。 3. **CAS客户端**:通常是指那些需要接入CAS单点登录系统的应用服务端。 ...
5. **双向认证**:双向认证要求客户端也需要证书,服务器不仅要验证自己的身份,还要验证客户端的身份。这样可以确保双方都经过身份验证,增强安全性,常用于银行等高安全性的场景。 6. **Tomcat配置HTTPS**:要在...
4. **SSL双向/单向认证**:双向认证要求客户端和服务器都需验证对方的身份,而单向认证只需服务器验证客户端。openssl可以通过不同的命令行选项来实现这两种认证模式。 5. **导入证书**:生成的证书需要导入到...
6. 配置Tomcat的双向认证。 最后,通过`openssl s_client`命令进行模拟建链,以验证配置是否成功。对于单向认证和双向认证,分别使用不同的命令参数: - 单向认证模拟建链:`openssl s_client -connect ip:port -...