tomcat之https配置(生成证书)
tomcat之https配置(生成证书)
升级https需要购买SSL证书之类的,但是在公司开发环境下没有自己的域名,所以只能在本地使用java的Keytool命令生成一个。
生成ssl证书
1. 管理员打开cmd窗口,输入
keytool -genkey -alias tomcat -keyalg RSA -keystore Z:\WorkSpace\Plugins\Tomcat\ssl\tomcat.keystore -validity 36500
keytool 是jdk中的工具,位置在D:\tools\jdk\bin中。若未配置环境变量,可在bin文件夹中启动cmd,运行该代码。
“Z:\WorkSpace\Plugins\Tomcat\ssl\tomcat.keystore” 含义是证书文件保存位置,证书文件名称是tomcat.keystore ;
“-validity 36500” 含义是证书有效期,36500表示100年,默认值是90天。
2. 输入密钥库口令
输入密钥库密码:此处需要输入大于6个字符的字符串,例如abc123
3. 输入两次通过后,弹出以下问题:
"您的名字与姓氏是什么?" 这是必填项,并且必须是TOMCAT部署主机的域名或者IP [如:baidu.com 或者 127.0.0.1],就是你将来要在浏览器中输入的访问地址;
其他得问题可填可不填,最后对照信息正确则输入y,不正确打算重来则输入n。
4. 输入密钥口令
密钥库口令,这里我理解的是tomcat的主密码,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以生成完成,可在指定目录下找到证书文件。
配置tomcat
1. 修改server.xml
a. 打开tomcat目录下conf/server.xml文件,修改如下
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="800" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:/tools/tomcat-8.0/ssl/tomcat.keystore" keystorePass="123456"/>
在这里我是新增加了443的Connector,也可以取消8443的Connector,增加“keystoreFile”和“keystorePass”。
其中keystoreFile是证书存放的路径,keystorePass为生成证书时输入的密码。
b. 修改需要重定向的端口,我这里用的是8080。
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="200000" redirectPort="443" URIEncoding="utf-8" compression="on" compressionMinSize="1024" maxPostSize="-1" disableUploadTimeout="false" />
例子:
2. 修改web.xml
a. 打开conf/web.xml
在最后增加以下代码:
<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>
至此tomcat配置完成,启动tomcat即可使用ssl,在浏览器输入localhost:8080
Tomcat配置完成后,使用Https访问,Chrome会提示安全警告,点击“高级”,继续访问即可,之后再https下使用ip地址访问是没有问题的。
注意:若端口443被占用页面会出现403报错,可改为8443测试
注意:tomcat无法配置代理,可在前端写死路径访问后端,但建议需要代理使用nginx
参考自:https://blog.csdn.net/qq_31832209/article/details/111309586 @强
钻研不易,转载请注明出处。。。。。。