# 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 星期四 事件描述备注:保存/发布 中国 天津 [](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)