ToB企服应用市场:ToB评测及商务社交产业平台

标题: Keytool配置 Tomcat的HTTPS双向认证 [打印本页]

作者: 王柳    时间: 2022-6-23 10:13
标题: Keytool配置 Tomcat的HTTPS双向认证
Keytool配置 Tomcat的HTTPS双向认证



证书生成

keytool 简介

Keytool是一个Java数据证书的管理工具, Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。
在keystore里,包含两种数据:
我们常说的证书就是就是上面的公钥,公钥是公开给其它人使用的
Tips:

keytool 命令详解

Tips:

创建证书

创建秘钥库(keystore),秘钥库是存储一个或多个密钥条目的文件,每个密钥条目应该以一个别名标识,它包含密钥和证书相关信息。

Tips:
创建证书栗子


导出证书信息

此证书文件不包含私钥;分为自签名证书和认证证书,下面分别介绍了两中证书的生成方式

导出自签名证书

自签名证书没有经过证书认证机构进行认证,但并不影响使用,我们可以使用相应的命令对证书进行导出;

导出证书栗子

获取认证证书(生成证书签名请求)

如果想得到证书认证机构的认证,则不使用上述的自签名证书,需要使用步骤导出数字证书并签发申请(Cerificate Signing Request),经证书认证机构认证并颁发后,再将认证后的证书导入本地密钥库与信任库。

生成证书签名请求栗子


导入证书库

双向认证: 将各自的公钥证书分别导入对方的信任库,使客户端和服务端相互信任。

导入证书栗子


查看证书

查看栗子证书


其他keytool命令
  1. # 删除keystore里面指定证书条目
  2. keytool -delete -alias <alias> -keystore <keystore_file> -storepass <keystore_passwd>
  3. # 修改条目别名
  4. keytool -changealias -keystore <keystore_file> -alias <old_alias> -destalias <new_alias>
  5. # 修改条目密码
  6. keytool -keypasswd -alias <alias> -keypass <old_keypasswd> -new <new_keypasswd> -keystore <keystore_file> -storepass <keystore_passwd>
  7. # 修改keysore密码
  8. keytool -storepasswd -new <new_storepasswd> -keystore <keystore_file> -storepass <old_storepasswd>
  9. # 列出信任的CA证书(查看 JVM的信任库中的证书,storepass 默认为changeit)
  10. ## 该证书文件存在于JAVA_HOME\jre\lib\security目录下,是Java系统的CA证书仓库,可以用 'alias' 来查看证书是否真的导入到JVM中
  11. keytool -list -v [-alias clientCer] -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
  12. # 导入新的CA到信任证书,导入到 JRE的信任证书库
  13. ## 常出现的异常:“未找到可信任的证书”  -- 主要原因为在客户端未将服务器下发的证书导入到JVM中。
  14. keytool -import -trustcacerts -alias clientCer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file ~/ssl/client.cer
复制代码
Tomcat服务认证配置

打开Tomcat_HOME/conf/server.xml,找到如下原注释内容,并修改如下:
  1. [/code]Tips:
  2. [list]
  3. [*]其中 clientAuth 指定是否需要验证客户端证书
  4. [list]
  5. [*]false : 表示单向SSL验证,即服务端认证;
  6. [*]true : 表示强制双向SSL验证,必须验证客户端证书;
  7. [*]want : 表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。
  8. [/list]
  9. [*]如果设置了clientAuth="true",则需要强制验证客户端证书。可通过双击 p12 文件将证书导入至浏览器;
  10. [*]浏览器的HTTP缺省端口为 80 , HTTPS缺省端口为 443;
  11. [*]keystoreFile /keystorePass : 服务器证书文件和密码;
  12. [*]truststoreFile /truststorePass : 信任证书文件和密码;用来验证客户端的。
  13. [/list][size=4]SSL单向证书认证配置[/size]
  14. [list=1]
  15. [*]创建服务器证书
  16. [*]导出服务器公钥证书
  17. [*]将服务器公钥证书导入客户端(客户端信任服务器)
  18. [*]配置 Tomcat
  19. 打开Tomcat_HOME/conf/server.xml,找到如下原注释内容,并修改如下:
  20. [code]
复制代码
SSL双向证书认证配置