# HTTPS SSL 证书获取与部署
*web 技术栏*
将 SSL 证书购买 并部署到 Web 服务器中,实现 https 部署!
## 目录
[TOC]

## 介绍
HTTP 协议是一种基于 TCP 的网络传输协议,用来进行网站的通讯,后来基于 HTTP 进行了一个升级,使用 SSL 证书的方式增强的网络协议的安全性,在现在的网站占比中支持 https 的网站如今已经有 %90 了,因此给网站部署一个 SSL 证书是非常指的学习的一件事情,接下来就来学习一下吧!
*PS:本文中的网址是映射到的本地 127.0.0.1 而非 LY码本录 官网,便于测试*
## 获取证书
获取证书之前,需要我们将域名准备好,然后以这个域名在 阿里云中购买证书,阿里云提供了一个免费体验的证书购买。
### 从证书的运营商获取到空白证书
[](https://diskmirror.lingyuzhao.top/24/Binary//Article/Image/1707375539143.jpg)
### 创建证书
我们购买了证书之后,就可以直接开始进行创建证书了,需要注意的是 创建证书的时候需要进行 DNS 验证,以确认域名的所有人是我们。
[](https://diskmirror.lingyuzhao.top/24/Binary//Article/Image/1707364488270.jpg)
## 证书部署
在 阿里云 的文档中针对证书的部署具有一些描述,可以根据文档中的信息来进行部署
<iframe src='https://help.aliyun.com/zh/ssl-certificate/user-guide/install-certificates-to-servers/?spm=a2c4g.11186623.0.0.62363359WHwNAD' style="width:70vw;height:50vh" />
### TomCat 服务器 SSL 证书部署(多证书部署)
阿里云的文档中描述了诸多 Web 容器中SSL证书部署方法,但是在 TomCat 8.5 版本之后,针对 SSL 证书的部署出现了一种新型的方法,其可以在一个容器中部署多个证书,下面就开始进行具体的示例。
#### 将证书存储在一个目录中
这个目录可以是任意的目录,后面会在写配置文件的时候需要将此目录配置进去,因此目录是任意的,我们将证书存放在了目录`E:\RunTime\Apache-tomcat-9.0.56\ssl`中
```
E:\RunTime\Apache-tomcat-9.0.56\ssl>dir
驱动器 E 中的卷没有标签。
卷的序列号是 BB98-5771
E:\RunTime\Apache-tomcat-9.0.56\ssl 的目录
2024/02/07 22:30 <DIR> .
2024/02/07 22:30 <DIR> ..
2024/02/07 22:29 4,669 www.lingyuzhao.top.pfx
2024/02/07 22:30 4,661 www.test.lingyuzhao.top.pfx
2 个文件 9,330 字节
2 个目录 290,475,704,320 可用字节
```
#### 配置证书
##### 将证书的文件和密码提供给 TomCat
在这里我们需要将 证书配置到 TomCat 中,需要进入到 TomCat 的conf/server.xml 文件中 找到 `Service` 标签,其中可以设置`Connector`标签,每个 `Connector` 代表的就是一个端口的访问配置,在其中可以进行 SSL 证书的配置,下面是一个实例。
```
<!-- 80 端口的访问配置 这里是重定向到 443 -->
<Connector connectionTimeout="60000" maxPostSize="104857600" port="80" protocol="HTTP/1.1" redirectPort="443" />
<!-- 443 号端口访问的配置 -->
<Connector SSLEnabled="true" maxParameterCount="1000" maxThreads="150" port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
defaultSSLHostConfigName="www.lingyuzhao.top" >
<!-- 第一个域名的 SSL 证书配置 -->
<!--
certificateKeystoreFile = 证书的路径
certificateKeystorePassword = 证书的对应的密码 在下载完证书之后可以查询到
certificateKeystoreType = 证书的 key 存储类型 这里不需要变更
type = 识别与证书兼容的算法 这里不需要改动
-->
<SSLHostConfig hostName="www.lingyuzhao.top">
<Certificate certificateKeystoreFile="E:/RunTime/Apache-tomcat-9.0.56/ssl/www.lingyuzhao.top.pfx"
certificateKeystorePassword="*********" certificateKeystoreType="PKCS12" type="RSA" />
</SSLHostConfig>
<!-- 第二个域名的 SSL 证书配置 -->
<SSLHostConfig hostName="www.test.lingyuzhao.top">
<Certificate certificateKeystoreFile="E:/RunTime/Apache-tomcat-9.0.56/ssl/www.test.lingyuzhao.top.pfx"
certificateKeystorePassword="*********" certificateKeystoreType="PKCS12" type="RSA" />
</SSLHostConfig>
</Connector>
```
##### 配置 security-constraint
在 TomCat 的 `conf/web.xml` 文件的 `web-app` 标签中,我们需要加入一段配置,具体如下所示。
```
<!-- 如果启用 ssl 证书 需要添加的配置 -->
<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>
```
#### 启动 TomCat
在这里注意看前两行的日志,分别启动了 80 和 443 端口的协议处理器,到这里 TomCat 就已经成功启动了。
```
07-Feb-2024 22:58:13.836 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-80"]
07-Feb-2024 22:58:13.846 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["https-jsse-nio-443"]
07-Feb-2024 22:58:14.411 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[842]毫秒内初始化
07-Feb-2024 22:58:14.424 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
07-Feb-2024 22:58:14.424 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.56]
07-Feb-2024 22:58:14.434 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [E:\RunTime\Apache-tomcat-9.0.56\webapps\docs]
07-Feb-2024 22:58:15.941 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间 跳过不需要的JAR可以缩短启动时间 和JSP编译时间。
07-Feb-2024 22:58:15.962 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[E:\RunTime\Apache-tomcat-9.0.56\webapps\docs]的部署已在[1,528]毫秒内完成
07-Feb-2024 22:58:15.962 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [E:\RunTime\Apache-tomcat-9.0.56\webapps\examples]
07-Feb-2024 22:58:17.435 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间 跳过不需要的JAR可以缩短启动时间 和JSP编译时间。
07-Feb-2024 22:58:17.457 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[E:\RunTime\Apache-tomcat-9.0.56\webapps\examples]的部署已在[1,495]毫秒内完成
07-Feb-2024 22:58:17.457 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [E:\RunTime\Apache-tomcat-9.0.56\webapps\host-manager]
07-Feb-2024 22:58:18.651 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间 跳过不需要的JAR可以缩短启动时间 和JSP编译时间。
07-Feb-2024 22:58:18.651 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[E:\RunTime\Apache-tomcat-9.0.56\webapps\host-manager]的部署已在[1,194]毫秒内完成
07-Feb-2024 22:58:18.651 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [E:\RunTime\Apache-tomcat-9.0.56\webapps\manager]
07-Feb-2024 22:58:19.692 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间 跳过不需要的JAR可以缩短启动时间和JSP编译时间。
07-Feb-2024 22:58:19.692 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[E:\RunTime\Apache-tomcat-9.0.56\webapps\manager]的部署已在[1,041]毫秒内完成
07-Feb-2024 22:58:19.692 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [E:\RunTime\Apache-tomcat-9.0.56\webapps\ROOT]
07-Feb-2024 22:58:20.784 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间 跳过不需要的JAR可以缩短启动时间和JSP编译时间。
07-Feb-2024 22:58:20.784 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[E:\RunTime\Apache-tomcat-9.0.56\webapps\ROOT]的部署已在[1,092]毫秒内完成
07-Feb-2024 22:58:20.784 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-80"]
07-Feb-2024 22:58:20.792 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["https-jsse-nio-443"]
07-Feb-2024 22:58:20.792 信息 [main] org.apache.catalina.startup.Catalina.start [6379]毫秒后服务器启动
```
#### 开始测试
经过两个地址的访问 都成功的访问到了我们的TomCat 服务器,且是使用的 https 协议,到此案例结束

------
***操作记录***
作者:[SpringBoot 助手](https://www.lingyuzhao.top//index.html?search=24 "SpringBoot 助手")
操作时间:2024-02-08 23:30:21 星期四
事件描述备注:保存/发布
中国 天津
[](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)