查看证书#
- Usage:
- # 查看单个证书(cer | crt) keytool -printcert -file
[-v|-rfc] # 查看密钥库中的证书条目 keytool -list [-alias ] -keystore -storepass [-v|-rfc] # 查看生成的CSR证书请求 keytool -printcertreq -file - Options:
- -alias 密钥库中的证书条目别名; -keystore 指定密钥库文件; -storepass 密钥库口令; -printcert 执行证书打印命令; -list 缺省情况下,命令打印证书的 MD5 指纹。 而如果指定了 -v 选项,将以可读格式打印证书, 如果指定了 -rfc 选项,将以可打印的编码格式输出证书。
查看栗子证书#
- 查看证书信息
- keytool -printcert -file ~/ssl/client.cer [-v|-rfc]
- 查看密钥库
- keytool -list -keystore ~/ssl/tomcat.jks -storepass 123456 -v
- 查看base64的内容(即PEM编码)
- keytool -list -keystore ~/ssl/tomcat.jks -storepass 123456 -rfc
其他keytool命令#
# 删除keystore里面指定证书条目
keytool -delete -alias -keystore -storepass
# 修改条目别名
keytool -changealias -keystore -alias -destalias
# 修改条目密码
keytool -keypasswd -alias -keypass -new -keystore -storepass
# 修改keysore密码
keytool -storepasswd -new -keystore -storepass
# 列出信任的CA证书(查看 JVM的信任库中的证书,storepass 默认为changeit)
## 该证书文件存在于JAVA_HOMEjrelibsecurity目录下,是Java系统的CA证书仓库,可以用 'alias' 来查看证书是否真的导入到JVM中
keytool -list -v [-alias clientCer] -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
# 导入新的CA到信任证书,导入到 JRE的信任证书库
## 常出现的异常:“未找到可信任的证书” -- 主要原因为在客户端未将服务器下发的证书导入到JVM中。
keytool -import -trustcacerts -alias clientCer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file ~/ssl/client.cer
Tomcat服务认证配置#
打开Tomcat_HOME/conf/server.xml,找到如下原注释内容,并修改如下:
Tips:
- 其中 clientAuth 指定是否需要验证客户端证书
- false : 表示单向SSL验证,即服务端认证;
- true : 表示强制双向SSL验证,必须验证客户端证书;
- want : 表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。