**Tomcat****配置https访问**

Tomcat****配置https访问

1、概念简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。

HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

2、HTTPS和HTTP的区别

1、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

2、HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

4、HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

3、Tomcat实现HTTPS步骤大纲

1、添加域名解析:到自己的域名解析商处,添加一条A记录指向你的服务器IP即可。

2、申请证书:使用刚才添加的域名申请一个SSL证书;

3、上传证书到tomcat服务器:在tomcat目录新建一个ssl目录,将证书文件上传到这个目录;

4、修改server.xml:vim打开server.xml,添加ssl连接器

5、修改HOST配置

6、重启Tomcat服务

7、查询端口是否监听

8、测试访问

4、配置tomcat实现https访问

主机IP:192.168.10.10

系统版本:centos7.2

tomcat版本:tomcat 8.5.8

4.1、使用jdk自带的keytool工具生成证书

证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;这里由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买。

用JDK自带的keytool工具生成证书方法如下:

4.1.1、keystore的生成方法1(分阶段生成)

keytool -genkey -alias tomcat(别名) -keypass tomcat(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore /usr/local/tomcat/ssl/tomcat.keystore (指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码) -deststoretype pkcs12(指定证书格式)

回车输入相关信息即可;

4.1.2、keystore的生成方法2(一次性生成)

keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore /u.ksr.keystore -storepass 123456 -dname ".keystore -storepass 123456 -deststoretype pkcs12(指定证书格式) -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份.称, C=(单位的两字母国家代码)";(中英文即可)

[root@master ~]# keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore /usr/local/tomcat/ssl/tomcat.keystore -storepass 123456 -deststoretype pkcs12 -dname "CN=(tomcat), OU=(tomcat), O=(tomcat), L=(beijing), ST=(beijing), C=(cn)"

4.1.3、keystore信息的查看

[root@master ~]# keytool -list -v -keystore /usr/local/tomcat/ssl/tomcat.keystore -storepass 123456

密钥库类型: JKS

密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: tomcat

创建日期: 2018-8-15

条目类型: PrivateKeyEntry

证书链长度: 1

证书[1]:

所有者: CN=(tomcat), OU=(tomcat), O=(tomcat), L=(beijing), ST=(beijing), C=(cn)

发布者: CN=(tomcat), OU=(tomcat), O=(tomcat), L=(beijing), ST=(beijing), C=(cn)

序列号: 346aa6a

有效期为 Wed Aug 15 22:40:05 CST 2018 至 Thu Aug 15 22:40:05 CST 2019

证书指纹:

      MD5:  F0:5D:20:97:04:E0:3D:C2:40:FC:40:17:F3:48:E3:36

      SHA1: 6D:C8:0B:A9:76:5D:03:20:4D:A4:CD:6F:F5:93:E2:5D:A0:B4:3A:76

      SHA256: 46:F1:F8:BB:7E:AF:C5:55:BE:82:65:D2:3C:1A:95:1A:A3:4C:15:28:4D:EC:10:D7:D1:DE:4D:4F:6D:3B:B6:9F

签名算法名称: SHA256withRSA

主体公共密钥算法: 1024 位 RSA 密钥

版本: 3

缺省情况下,-list ****命令打印证书的 MD5 ****指纹。而如果指定了 -v ****选项,将以可读格式打印证书,如果指定了 -rfc ****选项,将以可打印的编码格式输出证书。

[root@master ~]# keytool -list -rfc -keystore /usr/local/tomcat/ssl/tomcat.keystore -storepass 123456

密钥库类型: JKS

密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: tomcat

创建日期: 2018-8-15

条目类型: PrivateKeyEntry

证书链长度: 1

证书[1]:

-----BEGIN CERTIFICATE-----

MIICejCCAeOgAwIBAgIEA0aqajANBgkqhkiG9w0BAQsFADBwMQ0wCwYDVQQGEwQo

Y24pMRIwEAYDVQQIEwkoYmVpamluZykxEjAQBgNVBAcTCShiZWlqaW5nKTERMA8G

A1UEChMIKHRvbWNhdCkxETAPBgNVBAsTCCh0b21jYXQpMREwDwYDVQQDEwgodG9t

Y2F0KTAeFw0xODA4MTUxNDQwMDVaFw0xOTA4MTUxNDQwMDVaMHAxDTALBgNVBAYT

BChjbikxEjAQBgNVBAgTCShiZWlqaW5nKTESMBAGA1UEBxMJKGJlaWppbmcpMREw

DwYDVQQKEwgodG9tY2F0KTERMA8GA1UECxMIKHRvbWNhdCkxETAPBgNVBAMTCCh0

b21jYXQpMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdo4jFF69gWQPzvCZl

E520LdQH51aCbTIAAZxHyAnuI2eI5MH+PepK9hWLpaUZ7ldS9IRb3ECG2K2DIzP7

QwM1QyRqHgCQ8jaVhU6oLa7SS9sAlG8Sq+xTbu9EcJhsV/0BTAg2aGKh/+1yIkAA

Vevl0cjhH7RfyicOMWCu2YbnlQIDAQABoyEwHzAdBgNVHQ4EFgQUfViJoJUJec0N

WlZpNavfTk9rmo4wDQYJKoZIhvcNAQELBQADgYEACksq/r+TsIc4DlKxed9FWuqx

YQOtbeFTZmGQbyPQ7CbsAanT4QJbKkNsL/GUSFcG9IswZDPUiWRC1/Tac5jMO19i

YXcDdeABdiSCw8aFrAyy6kkW1371HoDaJ1kEzRTqNmycyMMbuTbkmN2ImzQl0Gro

vMGIcDG4rCgnoMQUNv0=

-----END CERTIFICATE-----



4.2、keytool工具介绍

-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias 产生别名
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
-keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的密码(获取keystore信息所需的密码)
-keypass 指定别名条目的密码(私钥的密码)
-dname 指定证书拥有者信息

-list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
-export 将别名指定的证书导出到文件

-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目

-printcert 查看导出的证书信息
-keypasswd 修改密钥库中指定条目口令

-storepasswd 修改keystore口令

-import 将已签名数字证书导入密钥库

-certreq 生成证书请求

-changealias 更改条目的别名

-delete 删除条目

-exportcert 导出证书

-genkeypair 生成密钥对

-genseckey 生成密钥

-gencert 根据证书请求生成证书

-importcert 导入证书或证书链

-importpass 导入口令

-importkeystore 从其他密钥库导入一个或所有条目

-keypasswd 更改条目的密钥口令

-list 列出密钥库中的条目

-printcert 打印证书内容

-printcertreq 打印证书请求的内容

-printcrl 打印 CRL 文件的内容

-storepasswd 更改密钥库的存储口令

keytool -importkeystore [OPTION]...

从其他密钥库导入一个或所有条目

-srckeystore 源密钥库名称

-destkeystore 目标密钥库名称

-srcstoretype 源密钥库类型

-deststoretype 目标密钥库类型

-srcstorepass 源密钥库口令

-deststorepass 目标密钥库口令

-srcprotected 受保护的源密钥库口令

-srcprovidername 源密钥库提供方名称

-destprovidername 目标密钥库提供方名称

-srcalias 源别名

-destalias 目标别名

-srckeypass 源密钥口令

-destkeypass 目标密钥口令

-noprompt 不提示

-providerclass 提供方类名

-providerarg 提供方参数

-providerpath 提供方类路径

-v 显示密钥库中的证书详细信息

4.3、修改tomcat配置文件server.xml

修改配置文件server.xml端口8443为443,并添加证书文件信息,修改见下面标注部分

[root@master ~]# vim /usr/local/tomcat/conf/server.xml

      maxThreads="150" SSLEnabled="true">

  

…………………………………………………..

将这里的localhost****修改为添加解析的域名即可,且必须与证书的通用名称保持一致

说明:certificateKeystoreFile 证书文件存放位置

  certificateKeystoreType 证书文件类型

  certificateKeystorePassword  证书的密码

4.4、重启tomcat服务并查看端口

[root@master ~]# catalina.sh stop

[root@master ~]# catalina.sh start

[root@master ~]# ss -ant|egrep "443|80"

LISTEN 0 100 :::8009 :::*

LISTEN 0 100 :::8080 :::*

LISTEN 0 100 :::443 :::*

4.5、浏览器测试

浏览器输入地址:https://192.168.10.10

**Tomcat****配置https访问**_第1张图片
image.png
**Tomcat****配置https访问**_第2张图片
image.png

可以看到我们的https配置完成,下面我们配置http自动跳转到https

5、配置HTTP自动跳转到HTTPS

上面我们实现了HTTPS访问,但是客户使用http访问,还是会走http协议,依然是不安全的,没有达到我们的需求,下面配置HTTP自动跳转到HTTPS。

5.1、修改web.xml文件

在web.xml文件中后面,也就是倒数第二行里,加上如下配置:



CLIENT-CERT

Client Cert Users-only Area









SSL

/*





CONFIDENTIAL




5.2、修改sever.xml文件

修改非SSL连接器的请求跳转到SSL连接器上,修改如下配置:

原来为:


修改为:


1、将默认8080端口修改为80端口,访问时就不需要加8080端口了,因为HTTP协议默认走的是80端口

2、将8443端口修改为443端口,意思是来自80端口的请求都跳转至443端口

5.3、重启tomcat服务并查看端口

[root@master ~]# catalina.sh stop

[root@master ~]# catalina.sh start

[root@master ~]# ss -ant|egrep "80|443"

LISTEN 0 100 :::8009 :::*

LISTEN 0 100 :::80 :::*

LISTEN 0 100 :::443 :::*

5.4、使用Linux中的curl命令测试

这里在Linux中展示跳转更为直观。

[root@master ~]# curl -I http://192.168.10.10

HTTP/1.1 302

Cache-Control: private

Expires: Thu, 01 Jan 1970 08:00:00 CST

Location: https://192.168.10.10/

Transfer-Encoding: chunked

Date: Wed, 15 Aug 2018 16:38:51 GMT

到这里,Tomcat配置HTTP自动跳转HTTPS就已经完成了

你可能感兴趣的:(**Tomcat****配置https访问**)