在tomcat中配置https一般会遇到两种情况:
情况一:内网中使用keytool命令生成后缀名为.keystore形式的证书;
情况二:到外网CA服务商申请证书,CA服务商发回的证书内,包含不同的服务器应用程序(例如nginx、apache)对应的证书。其中申请时会要设置密码,这个密码配置tomcat时需要用到。
针对tomcat需要使用到.jks后缀名的证书。
情况一配置方法:
方法如下:
1.命令行执行%JAVA_HOME%\bin\keytool -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/https.keystore -keypass ‘tomcat‘ -storepass ‘tomcat‘
-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="bin/.keystore" keystorePass=" s3cret"/>
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
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="conf/server_keystore.jks" keystorePass="sys12345" /> 3.重启tomcat,使用申请时所使用的域名访问,假设是www.test.com,那么需要使用https://www.test.com:8443。如果使用ip访问此目录则会警告域名与证书不符。 参考网址:
原文:http://hgmz123.blog.51cto.com/9413337/1722573