TOMCAT使用CA签发证书配置单向和双向SSL

一.获取签发服务器证书以及CA证书

1.创建本地证书密钥库以及密钥对

	
keytool -genkey -alias tomcat -keyalg RSA -keystore <your_keystore_filename>

在填写证书信息时,需要注意的是 "名字与姓氏" 或者 英文的"first- and lastname"填写服务器域名,

比如填写localhost

2.创建证书签发请求文件,里面包含了该文件的base64码用于获取签发证书

keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore <your_keystore_filename>

3.登录CA服务器http://ip/certsrv高级证书申请,使用base64码提交证书申请

然后使用文本打开*.csr文件,拷贝里面的所有内容,复制到表单,证书模板选择Web 服务器或者自己弄的Web 服务器副本

TOMCAT使用CA签发证书配置单向和双向SSL_第1张图片

4.下载申请的证书和CA的证书

比如CA的证书名是cacert.cerweb服务器证书名是tomcat.cer

二.导入证书到证书库

5.将CA证书导入证书库

keytool -import -alias root -keystore <your_keystore_filename> -trustcacerts -file cacert.cer
6.将web服务器证书导入证书库

keytool -import -alias tomcat -keystore <your_keystore_filename> -file tomcat.cer
三.配置TOMCAT

7.配置$CATALINA_BASE/conf/server.xml

1)单向认证

<Connector port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
               clientAuth="true" sslProtocol="TLS" 
               keystoreFile="<your_keystore_filename>" keystorePass="123456"/>
2)双向认证

	<Connector port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
               clientAuth="true" sslProtocol="TLS" 
               keystoreFile="<your_keystore_filename>" keystorePass="123456"
               truststoreFile="<your_keystore_filename>" truststorePass="123456" 
               />
8.有兴趣的可以改下log配置,查看转向到https时候tomcat的操作

tomcat修改Log为log4j

然后在log4j.properties里添加

log4j.appender.SSL=org.apache.log4j.DailyRollingFileAppender
log4j.appender.SSL.File=${catalina.base}/logs/ssl.log
log4j.appender.SSL.Append=true
log4j.appender.SSL.Encoding=UTF-8
log4j.appender.SSL.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.SSL.layout = org.apache.log4j.PatternLayout
log4j.appender.SSL.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.logger.org.apache.catalina.authenticator=DEBUG, SSL
org.apache.catalina.authenticator=DEBUG, SSL
用于记录认证过程

9.配置项目web.xml用于只能通过https访问

	<security-constraint>
		<web-resource-collection>
			<web-resource-name>Login</web-resource-name>
			<url-pattern>/account/*</url-pattern>
			<http-method>POST</http-method>
			<http-method>GET</http-method>
		</web-resource-collection>
		<user-data-constraint>
			<transport-guarantee>CONFIDENTIAL</transport-guarantee>
		</user-data-constraint>
	</security-constraint>
http-method为当为配置的访问方式时才进行认证跳转

url-pattern跟servlet的配置一样

<transport-guarantee>CONFIDENTIAL</transport-guarantee>这一条则规定只能通过https访问,使用http访问时自动重定向到https如果需要从https跳转到http需要在代码中重定向,暂时不了解其他方法跳转回来

10.启动TOMCAT,访问https://localhost:8443就OK了

参考:

1.TOMCAT SSL HOW-TO

2.TOMCAT自签发证书 SSL双向认证

你可能感兴趣的:(tomcat,log4j,servlet,ssl,服务器,Scheme)