tomcat 9 安装 ssl 证书 (.jks),开启 https 访问 (阿里云服务器为例)

本贴最后更新于 460 天前,其中的信息可能已经物是人非

一、前言

最近公司后台系统与微信公众号对接的项目初步完成,在经过测试通过后,老板提醒我公司的官网是"https"协议的,而我之前的测试则都是"http"协议的,这下子我楞了一下,因此我需要给我自己的 tomcat 服务器上安装 ssl 证书,然后再重新进行测试(表示无所畏惧!!!),接下来,我将简述一下我安装 ssl 证书的流程,主要是第一次安装,记录一下留个纪念。

二、安装流程

1、前提条件

我们需要拥有一个已经拥有 ssl 证书的域名,如果域名还没有 ssl 证书的话,可以先申请,现在大部分的厂家都支持每年一定额度的免费申请,如阿里云每年可以创建 20 个免费的证书。

登录阿里云的“数字证书管理服务”控制台,然后点击免费证书,再点击创建证书,填写相关信息,通过验证,等待几分钟就申请到啦

01tomcat9 安装 ssl 证书.jpg

02tomcat9 安装 ssl 证书.jpg

03tomcat9 安装 ssl 证书.jpg

2、下载 ssl 证书

接下来,我们点击下载按钮,下载 ssl 证书,这里我选择的是 JKS 格式

04tomcat9 安装 ssl 证书.jpg

3、放置证书

解压缩我们下载的 ssl 证书后,我们会得到两个文件,一个后缀名为".jks"的文件和一个".txt"的密码文件,然后我们将这两个文件传入到 Linux 服务器中 tomcat 安装目录的 conf 目录下,这里我用的是 Xftp 传输。

05tomcat9 安装 ssl 证书.jpg

4、配置 server.xml 文件

接下来,我们对 conf 目录下的 server.xml 文件进行配置

  1. 修改 节点的 port 和 redirectPort

    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
    

    更改为:

    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
    
  2. 默认情况下 <Connector port="8443" ......> 节点是被注释的,我们需要把注释去掉,然后对该节点进行配置,配置示例如下

    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
      maxThreads="150" scheme="https" secure="true"
      #证书保存的路径,这里建议写绝对路径,如我的”/usr/local/tomcat/apache-tomcat-9.0.35/conf/cloud.tencent.com.jks“
      keystoreFile="Tomcat 安装目录/conf/cloud.tencent.com.jks" 
      #密钥库密码,就是你那个”.txt“文件里的内容
      keystorePass="******"
      clientAuth="false"/>
    

    配置文件的主要参数说明如下:

    • keystoreFile:密钥库文件的存放位置,可以指定绝对路径,也可以指定相对于 <CATALINA_HOME> (Tomcat 安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat 将从当前操作系统用户的用户目录下读取名为 “.keystore” 的文件。
    • keystorePass:密钥库密码,指定 keystore 的密码。申请证书时若设置了私钥密码,请填写私钥密码;若申请证书时未设置私钥密码,请填写 Tomcat 文件夹中 keystorePass.txt 文件的密码。
    • clientAuth:如果设为 true,表示 Tomcat 要求所有的 SSL 客户出示安全证书,对 SSL 客户进行身份验证。

5、启动 Tomcat 服务器

  • 若已启动,我们需要在 Tomcat 安装目录 bin 目录下(例如:/usr/local/tomcat/apache-tomcat-9.0.35/bin)依次执行以下命令,关闭和重启 Tomcat 服务。
    ./shutdown.sh (关闭 Tomcat 服务)
    ./startup.sh (启动 Tomcat 服务)
    
  • 若未启动,我们需要在 Tomcat 安装目录 bin 目录下(例如:/usr/local/tomcat/apache-tomcat-9.0.35/bin)执行以下命令,启动 Tomcat 服务。
    ./startup.sh (启动 Tomcat 服务)
    

提示:这里可以在 /apache-tomcat-9.0.35/logs 目录下通过以下命令来监控是否成功启动 tomcat

tail -f catalina.out

6、访问验证

若启动成功,即可使用 https://你的域名 进行访问,如果浏览器地址栏显示安全锁标识,则说明证书安装成功。如下图所示:

06tomcat9 安装 ssl 证书.jpg

7、HTTP 自动跳转 HTTPS 的安全配置(可选)

如果我们需要将 HTTP 请求自动重定向到 HTTPS。我们可以通过以下操作设置:
找到 Tomcat 安装目录 conf 目录下(例如:/usr/local/tomcat/apache-tomcat-9.0.35/conf)的 web.xml 文件,打开它,找到 </welcome-file-list> 标签,并在结束标签 </welcome-file-list> 后面换行,添加以下内容:

<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 哦!!!

三、总结

以上就是我个人安装在 tomcat9 上安装 ssl 证书的整个流程,写完笔记之后,感觉更加流畅了,如果有什么问题,可以将问题发我邮箱 luodiab@126.com,欢迎各位的意见。

  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 4 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 437 关注
2 操作
luodiab 在 2023-08-02 16:55:08 更新了该帖
luodiab 在 2023-08-02 16:28:50 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...