keytool生成证书以及Tomcat配置https

内容概要:keytool生成.keystore, Tomcat配置HTTPS

1. 配置服务器HTTPS单向认证:让客户端验证服务器

主要命令:

1
2
3
4
keytool -genkey
keytool -export
keytool -import
keytool -list

##### 1. keytool生成.keystore文件
keytool是一个秘钥和证书管理工具。它将秘钥(key)和证书(certificates)存在一个称为.keystore的文件中。

1
2
$ which keytool
/usr/local/java/jdk1.8.0_112/bin/keytool

首先服务器生成证书,同时设置密码,例如123456

1
2
3
4
5
# 生成证书
$ keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/apache-tomcat/conf/localhost.keystore

# 导出证书
keytool -export -alias tomcat -keystore /usr/local/apache-tomcat/conf/localhost.keystore -file /usr/loca/apache-tomcat/conf/localhost.cer -storepass 123456

2. 配置Tomcat SSL

修改server.xml中的SSL服务, 在配置文件中加入以下内容:

1
2
3
4
5
6
<Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true"
SSLEnabled="true"
keystoreFile="conf/localhost.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS"/>

配置主机名文件/etc/hosts

1
127.0.0.1 www.test.com

然后就可以通过https访问https://www.test.com:8443/

2. 配置双向认证服务:让服务器验证客户端身份

主要步骤:

  • 生成客户端秘钥库:keytool -genkey
  • 导出证书文件: keytool -export
  • 将客户端证书导入服务器秘钥库信任链
  • Tomcat配置双向认证:server.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    sudo keytool -import -trustcacerts -alias tomcat -keystore /usr/local/java/jdk1.8.0_112/jre/lib/security/cacerts -file ~/localhost.cer -storepass 123456
    所有者: CN=zhang, OU=hw, O=hw, L=wh, ST=wh, C=cn
    发布者: CN=zhang, OU=hw, O=hw, L=wh, ST=wh, C=cn
    序列号: 67d8f973
    有效期开始日期: Fri Jul 21 14:24:38 CST 2017, 截止日期: Thu Oct 19 14:24:38 CST 2017
    证书指纹:
    MD5: 0A:D8:86:7C:62:E9:4E:E1:0A:1D:5C:D1:25:16:E8:5E
    SHA1: C2:13:BC:13:74:E7:AD:7B:F9:2C:E3:F7:C2:AB:48:02:C9:32:44:9C
    SHA256: 9E:15:84:19:33:72:F3:DC:DB:CE:A9:E0:89:5A:90:F7:04:25:42:60:1B:03:D9:D8:8D:A2:4F:E8:2E:B4:EB:5D
    签名算法名称: SHA256withRSA
    版本: 3

    扩展:

    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 17 B0 BD B4 EE F9 37 C1 24 E6 01 D7 9F E1 03 E6 ......7.$.......
    0010: 5C 43 3B C5 \C;.

    ]

    ]

    是否信任此证书? [否]: y
    证书已添加到密钥库中