配置tomcat服务https协议
配置tomcat服务https协议
声明:本篇文章配置方法适用于本地测试或者只有一台服务器测试环境的tomcat服务,如果需要给Nginx负载均衡配置https请转至下一篇文章。
步骤:
1. 生成个人CA证书(该证书只适用于测试使用)
2. 配置tomcat运行配置文件server.xml
3. 配置tomcat服务web.xml,实现将http请求转换成https请求
4. 在浏览器端导入安全证书,去除网页头部不安全提示
具体操作流程:
生成个人CA证书
(如果使用的是阿里云服务器做测试环境服务器可以直接在阿里云证书平台上购买免费版CA证书)
1.java环境:因为SUN公司提供了制作证书的工具keytool。
在JDK 1.4以后的版本中都包含了这一工具,它的位置为<JAVA_HOME>\bin\keytool.exe。
2.创建证书的命令:
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "c:\tomcattest.keystore"
参数的定义如下:
-alias :别名
-keyalg: 证书算法名称建议使用默认RSA
-keystore:**库
执行上面命令后需要输入**库的口令,该口令需要配置在server.xml中,不要忘记。
以上命令将生产一对非对称**和自我签名的证书c:\tomcattest.keystore.
注意:“名字与姓氏”应该是域名,输成了姓名,和真正运行的时候域名不符,会出问题
================================================================
配置tomcat运行配置文件server.xml
定位到tomcat的安装目录,找到conf下的server.xml文件
找到如下已经被注释的代码:
Xml代码
1. <!--
2. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
3. maxThreads="150" scheme="https" secure="true"
4. clientAuth="false" sslProtocol="TLS" />
5. -->
去掉注释,修改为:
Xml代码
1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
2. maxThreads="150" scheme="https" secure="true"
3. clientAuth="false" sslProtocol="TLS"
4. keystoreFile="c:\tomcattest.keystore"
5. keystorePass="你刚才为tomcat用户添加的口令"
6. ciphers="tomcat"/>
属性 |
描述 |
clientAuth |
如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证 |
keystoreFile |
指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<CATALINA_HOME>(Tomcat安装目录)环境变量 的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为“.keystore”的文件。 |
keystorePass |
指定keystore的密码,如果此项没有设定,在默认情况下,Tomcat将使用“changeit”作为默认密码。 |
sslProtocol |
指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不应该修改这个默认值。 |
ciphers |
指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。如果此项没有设定,在默认情况下,套接字可以使用任意一个可用的密码。 |
注:将protocol="HTTP/1.1"替换为protocol="org.apache.coyote.http11.Http11Protocol"
到这里,https协议就配置好了,你可以使用https://localhost:8443/ 来访问你的本地项目,验证是否配置成功。
若可以正常访问,你可以再次使用http://localhost:8080/ 来访问你的本地项目,验证原先的http是否可以正常访问。
点击继续浏览此网站
在浏览器端导入安全证书,去除网页头部不安全提示
声明:以下方法只适用于ie9以下版本
点击错误证书、导入证书至可信任的根证书颁发机构、重启浏览器之后就可以正常进入。
配置tomcat服务web.xml,实现将http请求转换成https请求
如果想设置强制跳转至https连接在项目下的web.xml中添加下面一段配置:
<security-constraint>
<web-resource-collection>
<web-resource-name>security</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
重启服务器之后直接输入域名地址localhost:8080/就能自动跳转到安全协议连接
https://localhost:8443