Tomcat配置HTTPS协议的请求

Tomcat配置HTTPS协议的请求

1、背景

​ tomcat原本默认请求方式就是http的,但是由于刚好手上在做一个项目,前后端分离的,把前端挂在了腾讯的静态网站托管上面去了,后端是直接挂在了服务器的tomcat上;

​ 项目技术:ssm(其实无关项目的事情,全部都是在tomcat上面的配置)

2、问题描述:

​ 根据上述的情景,需要将服务器的tomcat请求转为https的,不然的话,访问网页的时候就会出现一个情形:Mix…(我忘记了~打开浏览器的控制台就可以看到了),好像是什么混合内容的,直白点就是https请求方式的页面不能有使用http协议的后端请求;

3、至于获取域名、下载证书、自制证书等等的前期准备工作,这些百度都有一大堆了,我就不复述了;
4、正片开始:配置tomcat;

​ 1) 将tomcat的配置文件 server.xml 中关于https的相关配置的注释解开

<!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443
         This connector uses the NIO implementation. The default
         SSLImplementation will depend on the presence of the APR/native
         library and the useOpenSSL attribute of the
         AprLifecycleListener.
         Either JSSE or OpenSSL style configuration may be used regardless of
         the SSLImplementation selected. JSSE style configuration is used below.
    -->
    
<!-- port的值是配置好之后https的访问端口,可以在http协议配置处通过重定向方式转为https -->
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
		<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
			certificateKeystorePassword="30i799x41r"
                         type="RSA" />
        </SSLHostConfig>
</Connector>

<!-- 这里是可加可不加, 影响不大 -->
<Connctor port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" maxHttpHeaderSize="8192" />

值得注意的时候,这里其实保持原本的就行了,甚至都不用添加什么新的项;

​ 证书的类型不同就使用不同的配置方式,我的是jks类型的,祥看上面最后一行注释 : the SSLImplementation selected. JSSE style configuration is used below.

​ 证书放置的位置,我这里是与server.xml位于同一目录下,其他位置就使用绝对路径吧;

注意点: 在网上有很多老帖,两三年前的,会教你将 protocol 值设置为 HTTP/1.1千万不要这样做,不然的话,你的tomcat会直接崩掉,再也启动不起来那种,如果你不是很熟悉这个原因的话,可能你得再花很多时间去处理这个新问题。如果是直接在服务器上的tomcat倒是问题不大,如果是用docker挂载的容器,直接删掉重建吧。

​ 2)在web.xml 配置文件中配置相关信息(直接滚轮滑动到最下面,写在 </web-app> 标签之前:

<login-config>
	    <auth-method>CLIENT-CERT</auth-method>
	    <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    <security-constraint>
	    <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>

​ 这里提一下我自己遇到的小问题:

<auth-method>CLIENT-CERT</auth-method>

此处是横杠,而不是下划线,敲错了会导致配置失败不生效;

<realm-name>Client Cert Users-only Area</realm-name>

此处是Users-only,有一个s以及是横杠,敲错了也是会导致配置不生效;

​ 以上两处都不是什么大问题,就是一些细节,错了就可能又浪费多一点时间;基本上按照上面配置好,就可以将http请求转为https方式的了;

PS: 如果配置完之后还是发现不太行,那就一步步排除问题,

​ 首先确保整个项目是正常的,在http请求方式是能够正常访问的;

​ 接着如果是被浏览器的访问策略拦截了,就百度,因为每种问题都有不同的原因;

​ 如果出现tomcat那种404的话,就可以确定问题是你上面的配置问题,可以通过查看tomcat的启动日志,应该能够找到问题的所在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值