您好,登录后才能下订单哦!
Tomcat中怎么配置SSL,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
生成Server端安全证书 首先要在本地准备一份符合X.509标准的Server端安全证书。如果有条件的话,可以向权威CA申请一份经过认证的安全证书(需要繁琐的手续和金钱)。如果没有条件的话,可以使用JDK提供的证书生成工具,在Windows命令行中操作如下:
C:\> keytool -genkey -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -dname "cn=127.0.0.1,ou=product,o=uestc,c=CN" -validity 3650 -storepass uestc@#123zp -keystore c:\key.store 输入<mykey>的主密码 (如果和 storepass 密码相同,按回车):(按回车) 这样就在C:\目录下生成了Server端的安全证书(key.store)。
备注:
使用低版本的JDK(如JDK 1.4)带的keytool工具生成证书时,由于不支持SHA256withRSA算法,会报如下错误“java.security.NoSuchAlgorithmException: SHA256WITHRSA Signature not available”;必须使用较高版本的JDK(如JDK 1.6)带的keytool来生成证书。
Linux下创建证书时,只需要更改上面命令的路径信息,其余不变。
注意:
生成安全证书的工具keytool的参数validity表示证书的有效期,单位为天,需要根据实际需要配置。
作为Server端安全证书,CN字段必须与WEB应用的实际域名保持一致,否则会使客户端报证书名称不一致。
由于某些web容器的原因,keypass和storepass必须保持一致。
对于非专业证书机构颁发的证书,如果要去掉“不受信任的证书”的告警,需要在客户端的浏览器中导入根证书,步骤如下:
1)访问https地址,查看证书:
2)点击复制到文件,即可保存cert文件
3)打开IE工具栏,选择工具—Internet选项—内容—证书
4)进入受信任的根证书颁发机构,点击“导入”,将上一步导出的cert文件导入受信任的根证书机构
5)重启IE,重新访问https地址,如下,不会提示证书不受信任
添加Server端安全证书
打开Tomcat安装目录下的/conf/server.xml文件。
修改http重定向到https的端口:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
注意:不同的tomcat版本,其配置项可能有一定差别,请在原配置文件上修改蓝色部分即可。
修改https参数
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
sslEnabledProtocols="TLSv1.1,TLSv1.2"[z1]
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA"[z2]
keystoreFile="c:/key.store" keystorePass="uestc@#123zp" clientAuth="false" />
[z3]
[z1]需要在配置中添加,仅允许此2种
[z2]需要在配置中添加
[z3]不能明文存储
注意:
1)keystoreFile参数的文件名请使用绝对路径,keystorePass参数上的口令即storepass口令。
2)上述配置,不同的tomcat版本,其配置项可能有一定差别,如果启动后,日志存在异常信息,那么,请在原配置文件上添加以上SSL相关配置项。
如果SSL不能正常启动,可以指定使用Java Secure Socket Extension (JSSE),即将protocol="HTTP/1"修改为protocol="org.apache.coyote.http1Http11Protocol"
配置需要强制使用SSL的目录或文件
例如对于/SSL目录下的所有文件和/test/login.jsp需要强制使用SSL,则编辑Tomcat对应web应用目录下的WEB-INF/web.xml,在<web-app>节中加入如下配置:
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/SSL/* </url-pattern>
<url-pattern>/test/login.jsp</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
注意:
Web应用中,从https切换到http过程中会丢失session,无法保持会话的连续。解决的办法就是用http-https-http过程代替https-http过程,保证会话的连续性。
重新启动Tomcat
测试建议
在浏览器里输入:https://xx.xx.xx.xx: 443,应能通过SSL正常访问。
对于https切换到http页面需要重点进行测试,检查切换后会话是否中断。
在手机终端上进行测试,看能否正常使用。(如果有手机终端用户的话)。
使用SSL后,对性能会有影响,可进行性能测试。(可选)
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。