Tomcat 配置Https请求

一、tomcat版本:apache-tomcat-8.5.8-windows-x64

二、SSL证书申请

  1. 用JDK自带的keytool工具生成证书,可以用任意一台安装jdk的主机生成证书,无需申请,坏处是生成的证书没有通过认证,浏览器访问时,会出现不可信证书提醒,生成过程参考:http://lixor.iteye.com/blog/1532655

2、在第三方申请证书,国内外大多证书颁发单位都是收费的,也有部分是首年免费,本文档演示的是在腾讯云DV SSL 域名型证书申请,首年免费,其他颁发单位参考:Let's Encrypt、StartSSL、COMODO PositiveSSL、CloudFlare SSL、Wosign沃通SSL等。

三、腾讯云证书申请过程

1、登录腾讯云,选择SSL证书管理(https://console.qcloud.com/ssl

证书列表

2、点击申请证书


申请证书

3、填写证书信息

填写资料
填写资料

注:
3.1 通用名称为需要配置https协议访问服务的域名
3.2 证书备注名随便填,方便记忆即可
3.3 私钥密码填写后必须留存,配置tomcat时需要用到

4、域名身份验证,第一种是手动DNS验证,这种方式需要用户在域名上解析一条腾讯云制定的二级域名,由于映射方式CNAME方式万网不提供,所以如果域名是在腾讯云上管理的可以采用这种方式,如果不是建议采用第二种文件验证

选择验证方式

5、文件验证
以下是官方提供的文件验证方法:
https://www.qcloud.com/document/product/400/4142#3.-.E6.96.87.E4.BB.B6.E9.AA.8C.E8.AF.81

文件验证
注意:

5.1 以tomcat为例,上诉的意思可以在Tomcat/webapp/Root文件夹下创建/.well-known/pki-validation文件目录,创建文件flieauth.htm,文件的内容是:根据证书详情中提供填写。

5.2 WINDOWS操作系统手动是无法创建.开头的文件夹,需要切换到DOS下,使用命令创建;
> md .well-known
5.3 windows server默认创建文本时隐藏了后缀名,所以最好是在本地创建好文件(确定文件后缀名是.htm)再放到服务器上;
5.4 配置好之后启动tomcat,访问路径,查看是否操作成功(tomcat中conf/server.xml入口端口需改成80);
5.5 配置成功后会腾讯云会自动进行验证,验证通过后会有短信提醒,时间大概是几分钟。
6、证书成功申请后,下载下来,将其中tomcat的证书解压到tomcat/conf目录下;
7、证书成功申请后,在证书管理列表中点击颁发进行证书颁发;
8、证书成功申请后,点击分配项目,分配到默认项目。

四、Tomcat配置

1、经过上述步骤我们已经得到了所需要的证书,将证书.jks文件放到tomcat/conf目录下
证书信息
2、打开conf/server.xml文件进行编辑

2.1 配置80端口节点修改如下
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
2.2 在80端口配置节点下添加如下配置

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
<Certificate certificateKeystoreFile="conf/www.abc.com.jks" certificateKeyAlias="www.abc.com"
            certificateKeystorePassword="sunrise2017"
                         type="RSA" />
        </SSLHostConfig>
</Connector>

注:certificateKeystoreFile是证书.jks文件的保存位置,此处是conf目录,如果是其他地址请填写完整目录;certificateKeyAlias是证书别名,建议放访问域名;certificateKeystorePassword是证书密码,在证书申请时填写保存的(很重要)。

2.3 修改

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

2.4 修改后启动tomcat,以https协议通过443端口访问tomcat资源,如果正常访问,则配置成功

3、80端口到https端口的自动映射

上述配置完成之后80端口和443端口是单独访问的,为了让用户在访问80端口时自动跳转443端口,需要修改conf/web.xml文件,打开文件在倒数第二行添加如下代码即可:

<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>
4、重启tomcat配置完成

<strong>特别注意:</strong>
1.此处配置的域名必须完成备案,否则80端口无法访问(如果没有备案,在申请证书验证的时候就无法通过,验证需要通过域名的80端口访问);
2.此处申请的证书绑定的是www顶级域名,亲测配置完成后二级域名也可使用https访问,但是会提示证书不安全,如有需要建议单独申请

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 服务器https配置 配置https操作说明文档 1、查看服务器环境配置(tomcat和apache合并使用) 2...
    南京杨小兵阅读 8,919评论 0 9
  • WWDC 16 中,Apple 表示将继续在 iOS 10 和 macOS 10.12 里收紧对普通 HTTP 的...
    小如99阅读 6,202评论 0 25
  • 基础概念介绍:秘钥/证书/https握手/CA相关概念crt证书: 只含有公钥p12证书: 是包含证书(含公钥...
    liangxifeng833阅读 5,713评论 0 10
  • 在使用过一段时间的腾讯路宝之后,决定谈谈关于导航的一些事儿。 在接触腾讯路宝之前,我的首选导航一直都是高德,对于高...
    延迟玩乐阅读 1,113评论 0 1