在tomcat中配置https一般会遇到两种情况:
情况一:内网中使用keytool命令生成后缀名为.keystore形式的证书;
情况二:到外网CA服务商申请证书,CA服务商发回的证书内,包含不同的服务器应用程序(例如nginx、apache)对应的证书。其中申请时会要设置密码,这个密码配置tomcat时需要用到。
针对tomcat需要使用到.jks后缀名的证书。
情况一配置方法:
方法如下:
命令行执行keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/https.keystore -keypass tomcat -storepass tomcat
-genkey 创建一个新的密钥
-alias 设置此证书的别名
-keyalg 指定密钥的算法
-storepass 指定访问存取的密码(如不在命令行中加上,那么命令刚执行就会提示输入密码)
-keypass 指定密钥库的密码(如不在命令行中加上,那么命令结束执行就会提示输入密码)
此两项设置相同较好
执行过程中会询问你一些信息,比如国家代码,省市等
2.打开conf目录下的server.xml文件,找到以下这一段
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
它被注释掉了,将注释去掉,并将这一段改成以下
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/https.keystore" keystorePass="tomcat"/>
注释:keystorePass为证书的密钥库密码
3.之后启动tomcat就可以了,通过https方式访问8443端口,就能看到效果。如果用http访问之前的端口,那么还是普通的未加密连接,若要使得访问http时强制跳转到到https。
在 tomcat /conf/web.xml 中的 </welcome- file-list> 后面加上这
<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>
4.重启tomcat,现在你放问原来的地址,假设是http://localhost:8080/mywebapp/,可以看到,连接被重定向到了https的连接https://localhost:8443/mywebapp/。这样,我们的目的达到了。
情况二配置方法:
1.将.jks后缀名的证书文件放到某一目录下,此次假设是/usr/local/tomcat,证书文件为www.test.com.jks,证书密码为test
2.打开conf目录下的server.xml文件,找到以下这一段
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
它被注释掉了,将注释去掉,并将这一段改成以下
<Connector port="8888" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat/www.test.com.jks" keystorePass="test" /> 参考网址:
http://www.blogjava.net/jjshcc/archive/2013/06/20/400769.html
http://blog.sina.com.cn/s/blog_64a52f2a0101g35m.html