安全套接字层 (SSL)是一种安全传输协议,用于使用加密方法在 Internet 上进行通信。SSL 协议的主要目的是保证
没有人可以篡改浏览器和部署 Web 应用程序
的服务器之间的通信。安全通信的另一个目的是
能够根据 SSL 信息对服务器及其所有者进行身份验证——这样用户就可以确定它正在访问的服务器就是它所说的服务器.?在常见的 SSL 场景中,当用户第一次访问 Web 服务器时,服务器会将其 SSL 证书或公钥发送给客户端。SSL 证书包含有关服务器、其所有者、公司及其有效期的信息。如果用户不信任证书的真实性,它可以拒绝证书,从而有效地终止连接。如果用户接受证书,则证书本身会存储在浏览器中,并用于启动与颁发服务器的安全连接。
基于 HTTP 协议的 SSL 协议通信被称为HTTPS(安全 HTTP)。使用 SSL 加密连接的网站在浏览器的地址栏中显示 https 作为协议名称,例如。称为证书颁发机构 (CA) 的组织可以验证 SSL 证书的详细信息,因此如果用户信任 CA,他们可以确保安全网站经过认证,并且其详细信息是正确的。有许多 CA 可以颁发经过认证的 SSL 证书。现代浏览器会自动识别最大和最知名的 CA,并允许连接到提供这些组织自动认证的 SSL 证书的站点。如果 SSL 证书未经 CA 认证,或者已通过 CA 认证但用户浏览器无法识别,则会向用户显示警告屏幕,用户可以在此决定是否信任该证书。
使用 SSL 配置 tomcat 是三步过程。
1) 生成密钥库
2) 更新 server.xml 中的连接器
3) 重启动Tomcat
1) 生成密钥库
SSL 证书是 JKS 文件。JKS 格式代表 Java KeyStore,它是一种 Java 特定的密钥库格式。JKS 密钥库可以使用keytool实用程序应用程序创建和操作,该应用程序作为 Java SDK 的一部分从 1.4 版开始分发。我们将用于创建自签名 SSL 证书的 Keytool 位于JAVA_HOME/bin/
目录中。
keytool -genkey -alias tomcat -keyalg RSA -validity 999999 -keystore /etc/tomcat/tomcat.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]: y
它将创建/etc/tomcat/tomcat.keystore文件。
一个 IP 地址只能有一个 SSL 证书。如果您在同一 IP 上托管多个域,则这些主机名中只有一个可以具有与其域名匹配的有效 SSL 证书。如果您尝试将 SSL 用于同一 IP 上的任何其他域名,浏览器将显示域名与证书不匹配的警告。这是 SSL 的一个已知限制,因为必须在从 HTTP 请求中提取主机名之前进行 SSL 协议握手。
2) 更新 server.xml 中的连接器
打开Tomcat安装目录并打开conf
文件夹。在此文件夹中,您将找到该server.xml
文件。打开它并找到以下声明:
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
???????????
maxThreads="150" scheme="https" secure="true"
???????????
clientAuth="false" sslProtocol="TLS" />
-->
|
并使用此信息更改它。不要忘记使用您的密码和密钥库路径。
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/etc/tomcat/tomcat.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" sslVerifyClient="optional"
sslEnabledProtocols="TLSv1.2,TLSv1.1,SSLv2Hello"/>
你完成了。现在查看应用程序更改。
3) 重启动Tomcat
systemctl restart tomcat
现在尝试使用https://localhost:8443/
?这将在浏览器中显示证书信息。
只有在您接受证书后才会显示该页面。