超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),用于安全的传输HTTP数据。
因此,今天来聊一聊关于tomcat(8.5.9)的HTTPS配置步骤
安装JDK环境
安装JDK8
1
2
3
4
5
|
tar
zxf jdk-8u111-linux-x64.
tar
.gz -C
/usr/local/
export
JAVA_HOME=
/usr/local/jdk1
.8.0_111
export
CLASSPATH=.:$JAVA_HOME
/lib/dt
.jar:$JAVA_HOME
/lib/tools
.jar
export
PATH=$JAVA_HOME
/bin
:$PATH
source
/etc/profile
|
检查JAVA环境是否安装完成
1
2
3
4
|
[root@centos ~]
# java -version
java version
"1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
|
安装Tomcat-8.5.9
安装Tomcat
1
2
3
|
tar
zxf apache-tomcat-8.5.9.
tar
.gz -C
/usr/local/
export
CATALINA_HOME=
/usr/local/apache-tomcat-8
.5.9
source
/etc/profile
|
启动Tomcat服务
1
2
3
4
5
6
7
8
9
10
11
|
[root@centos ~]
#/usr/local/apache-tomcat-8.5.9/bin/startup.sh
Using CATALINA_BASE:
/usr/local/apache-tomcat-8
.5.9
Using CATALINA_HOME:
/usr/local/apache-tomcat-8
.5.9
Using CATALINA_TMPDIR:
/usr/local/apache-tomcat-8
.5.9
/temp
Using JRE_HOME:
/usr/local/jdk1
.8.0_111
Using CLASSPATH:
/usr/local/apache-tomcat-8
.5.9
/bin/bootstrap
.jar:
/usr/local/apache-tomcat-8
.5.9
/bin/tomcat-juli
.jar
Tomcat started.
[root@centos ~]
# netstat -lntup|grep java
tcp 0 0 ::127.0.0.1:8005 :::* LISTEN 4681
/java
tcp 0 0 :::8009 :::* LISTEN 3983
/java
tcp 0 0 :::8080 :::* LISTEN 4681
/java
|
浏览器通过HTTP访问
利用JAVA自带工具keytool生成证书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@mingongge ~]
# keytool -genkey -alias tomcat8 -keyalg RSA -keystore /usr/local/keystore
Enter keystore password:
Re-enter new password: 输入密码,不显示
What is your first and last name?
[Unknown]: mingongge 输入你的名字
What is the name of your organizational unit?
[Unknown]: mingongge.com 输入组织单位名称
What is the name of your organization?
[Unknown]: mingongge.com 输入组织名称
What is the name of your City or Locality?
[Unknown]: hefei 输入你的城市
What is the name of your State or Province?
[Unknown]: anhui 输入你的省
What is the two-letter country code
for
this unit?
[Unknown]: CN 输入国家
Is CN=mingongge, OU=mingongge.com, O=mingogge.com, L=hefei, ST=anhui, C=CN correct?
[no]: y 确认配置
Enter key password
for
<tomcat8>
(RETURN
if
same as keystore password):
|
如果与前面相同直接回车,也可自定义
keytool命令如下:
-genkey
创建文件,文件中包含用户的公钥、私钥和证书
-alias 产生别名
-keystore 指定密钥库的名称
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
配置Tomcat
修改Tomcat配置文件
1
2
3
4
5
6
7
8
9
10
11
|
cd
/usr/local/apache-tomcat-8
.5.9
/conf/
cp
server.xml server.xml.$(
date
+%F)
vim server.xml
<Connector port=
"8443"
protocol=
"org.apache.coyote.http11.Http11NioProtocol"
maxThreads=
"150"
SSLEnabled=
"true"
>
<SSLHostConfig>
<Certificate certificateKeystoreFile=
"/usr/local/kestore"
certificateKeystorePassword=
"123456"
type
=
"RSA"
/>
<
/SSLHostConfig
>
<
/Connector
>
|
重启服务
1
2
3
4
5
6
7
|
[root@centos conf]
# ../bin/shutdown.sh
[root@centos conf]
# ../bin/startup.sh
[root@mingongge conf]
# netstat -lntup|grep java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 12508
/java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 12508
/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12508
/java
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 12508
/java
|
通过HTTPS协议访问
浏览器输入https://106.14.200.183:8443
因为是自生成的证书,所以才会出现上述证书安全有问题,点击继续浏览此网站即可
可能会有的小伙伴会说,https协议默认端口是443,你这是8443完全不一样,其实你错了,无非是个端口而已,因此回头将配置文件里的Connector port="8443"修改成如下
Connector port="443"
然后重启tomcat服务再测试访问
1
2
3
4
5
6
7
|
[root@centos conf]
# ../bin/shutdown.sh
[root@centos conf]
# ../bin/startup.sh
[root@mingongge conf]
# netstat -lntup|grep java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 12508
/java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 12508
/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12508
/java
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 12508
/java
|
两次的效果是完全一样,可以看出tomcat的https协议配置完成