HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)是以安全为目标的 HTTP 通道。在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP 的基础下加入 SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP 与 TCP 之间)。
本文将介绍怎样在 Tomcat 下面配置开启 HTTPS 协议,提高安全性。
JDK版本:javac 1.8.0_45
Tomcat版本:apache-tomcat-7.0.64
下面将介绍怎样使用 keytool 工具生成证书。如下:
(1)JDK6及以下
C:UsersAdministratorDesktopcert> keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: hxstrive
您的组织单位名称是什么?
[Unknown]: hxstrive
您的组织名称是什么?
[Unknown]: hxstrive
您所在的城市或区域名称是什么?
[Unknown]: CD
您所在的省/市/自治区名称是什么?
[Unknown]: SC
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=hxstrive, OU=hxstrive, O=hxstrive, L=CD, ST=SC, C=CN是否正确?
[否]: Y
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):(2)JDK1.7以上
C:UsersAdministratorDesktopcert> keytool -genkeypair -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: hxstrive
您的组织单位名称是什么?
[Unknown]: hxstrive
您的组织名称是什么?
[Unknown]: hxstrive
您所在的城市或区域名称是什么?
[Unknown]: CD
您所在的省/市/自治区名称是什么?
[Unknown]: SC
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=hxstrive, OU=hxstrive, O=hxstrive, L=CD, ST=SC, C=CN是否正确?
[否]: Y
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):打开 conf/server.xml 配置文件,添加如下配置:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<!-- ... -->
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/apache-tomcat-7.0.64-2/conf/cert/tomcat.keystore"
keystorePass="123456" />
<!-- ... -->
</Service>
</Server>注意,使用 keystoreFile 指定密钥库文件,采用绝对路径。keystorePass 表示密钥库的密码。
配置好 Tomcat 后,重启 Tomcat。使用浏览器访问 https://localhost:8443 验证,如果你能看见如下页面,则说明 HTTPS 开启成功。
