一.获取签发服务器证书以及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 服务器副本
4.下载申请的证书和CA的证书
比如CA的证书名是cacert.cerweb服务器证书名是tomcat.cer
二.导入证书到证书库
5.将CA证书导入证书库
- keytool -import -alias root -keystore <your_keystore_filename> -trustcacerts -file cacert.cer
- keytool -import -alias tomcat -keystore <your_keystore_filename> -file tomcat.cer
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"/>
- <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"
- />
然后在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>
url-pattern跟servlet的配置一样
<transport-guarantee>CONFIDENTIAL</transport-guarantee>这一条则规定只能通过https访问,使用http访问时自动重定向到https如果需要从https跳转到http需要在代码中重定向,暂时不了解其他方法跳转回来
10.启动TOMCAT,访问https://localhost:8443就OK了
参考: