基本概念
SSL证书:SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。
SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了),即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露,保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。数字签名又名数字标识、签章 (即 Digital Certificate,Digital ID ),提供了一种在网上进行身份验证的方法,是用来标志和证明网络通信双方身份的数字信息文件,概念类似日常生活中的司机驾照或身份证。 数字签名主要用于发送安全电子邮件、访问安全站点、网上招标与投标、网上签约、网上订购、网上公文安全传送、网上办公、网上缴费、网上缴税以及网上购物等安全的网上电子交易活动。
HTTPS协议:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
HTTP与HTTPS的区别:HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
官方文档
官方文档: https://tomcat.apache.org/tomcat-8.5-doc/config/http.html
操作步骤
获取SSL证书
1、阿里云申请免费的SSL证书
阿里云免费的SSL证书申请地址:https://common-buy.aliyun.com/?spm=5176.10695662.958455.3.58d37d544FnuYs&commodityCode=cas#/buy
下载SSL证书
Tomcat配置
阿里云SSL证书官方Tomcat配置说明:
Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。
文件说明:1.证书文件xxxx.pem,包含两段内容,请不要删除任何一段内容。
2.如果是证书系统创建的CSR,还包含:证书私钥文件xxxx.key、PFX格式证书文件xxxx.pfx、PFX格式证书密码文件pfx-password.txt。
1、证书格式转换
在Tomcat的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,附件中只包含xxxx.pem文件,还需要将私钥文件拷贝到cert目录,命名为xxxx.key;如果是系统创建的CSR,请直接到第2步。
到cert目录下执行如下命令完成PFX格式转换命令,此处要设置PFX证书密码,请牢记:openssl pkcs12 -export -out xxxx.pfx -inkey xxx.key -in xxxx.pem
2、PFX证书安装
找到安装Tomcat目录下该文件server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443" 标签,增加如下属性:
keystoreFile="cert/xxxx.pfx" keystoreType="PKCS12"
打开server.xml,找到如下代码,去掉注释
注:找不到直接添加也可以
修改为
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/xxx.pfx"
certificateKeystoreType="PKCS12" certificateKeystorePassword="xxx" />
</SSLHostConfig>
</Connector>
参数信息:
属性 | 描述 |
---|---|
certificateRevocationListFile | 包含证书颁发机构的级联证书吊销列表的文件名。格式是PEM编码的。如果未定义,则不会根据证书吊销列表检查客户端证书(除非使用了基于OpenSSL的连接器并且 定义了certificateRevocationListPath)。相对路径将针对解析 |
certificateRevocationListPath | 仅OpenSSL。 包含证书颁发机构的证书吊销列表的目录的名称。格式是PEM编码的。相对路径将针对解析 |
certificateVerification | 设置为 |
certificateVerificationDepth | 验证客户端证书时允许的中间证书的最大数量。如果未指定,将使用默认值10。 |
ciphers | 使用OpenSSL语法启用的密码。(有关支持的密码列表和语法,请参见OpenSSL文档。)或者,可以使用逗号分隔的使用标准OpenSSL密码名称或标准JSSE密码名称的密码列表。 对于基于JSSE的连接器,从OpenSSL语法转换为JSSE密码时,OpenSSL语法分析的行为与OpenSSL 1.1.0开发分支的行为保持一致。 仅使用SSL实施支持的密码。 如果未指定,将使用默认值(使用OpenSSL表示法) 请注意,默认情况下,定义密码的顺序被视为优先顺序。请参阅 |
hostName | SSL主机的名称。这应该是完全限定域名(例如 |
protocols | 与客户端通信时要支持的协议的名称。这应该是以下各项的任意组合的列表:
列表中的每个标记都可以带有加号(“ +”)或减号(“-”)前缀。加号添加协议,减号将其从当前列表中删除。该列表是从一个空列表开始构建的。 令牌 请注意, 请注意, 请注意, 如果未指定, |
sessionCacheSize | 要在会话缓存中维护的SSL会话数。指定 |
sessionTimeout | 创建SSL会话后将超时的时间(以秒为单位)。指定 |
sslProtocol | 仅限JSSE。 要使用的SSL协议(一个值可以启用多个协议-有关详细信息,请参阅JVM文档)。如果未指定,则默认为 |
注:Tomcat 8.0及以下配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="F:\Keystore\tomcat.keystore" keystorePass="123456"/>
参数信息:
属性 描述 clientAuth 如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证 keystoreFile 指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<CATALINA_HOME>(Tomcat安装目录)环境变量 的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为“.keystore”的文件。 keystorePass 指定keystore的密码,如果此项没有设定,在默认情况下,Tomcat将使用“changeit”作为默认密码。 sslProtocol 指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不应该修改这个默认值。 ciphers 指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。如果此项没有设定,在默认情况下,套接字可以使用任意一个可用的密码。
保存
重启Tomcat
访问
https//:域名:端口
注:HTTPS协议默认端口443
常见问题
暂无
参考文章
https://segmentfault.com/a/1190000009780545
https://www.jianshu.com/p/9aabef3373ee
https://www.cnblogs.com/liaojie970/p/6693841.html