Tomcat的SSL证书存储在keystore文件中,一般以“.jks”为扩展名。
Keystore
Keystore的本质可以看作是一个证书存储器,里面可以存储多个证书。Tomcat只能配置一个keystore文件,通过keystore文件实现多个证书的配置。
每一个证书有自己的别名(alias)以及Key密码,别名用来引用证书,唯一,创建证书时指定;Key密码用来加密保护证书的私钥。
Keystore文件还有一个文件密码,加密Keystore文件,配置tomcat keystore时需要配置该密码。
Keytool
Keytool是JDK自带的证书生成工具,用于生成SSL证书。本例使用JDK1.7。
使用以下命令生成一个自签署的证书存储在一个keystore文件里面
keytool -genkeypair -dname "CN=Stone Lee, OU=IOP, O=Inspur, L=JN, S=SD, C=CN " -alias testAlias -keypass 000000 -keystore /root/cert/mykeystore.jks -storepass 123456 -validity 180 - keyalg RSA
- dname 证书信息
- CN: commonName,证书的使用者,可以是人名或者域名
- OU: organizationUnit,组织单位
- O: organizationName,组织
- L: localityName,城市等
- S: stateName, 州级地区
- C: country code: 2位的国家代码
- alias: 证书别名,keytool工具使用证书别名来引用证书做各种操作
- keypass: 将证书的私钥使用该密码加密存储于keystore中
- keystore: keystore文件的路径
- storepass : keystore文件的密码
- validity:证书的有效时间
- keyalg: 证书的加密算法
特殊
If you’re relying on the Java system properties to inform JSSE about the keystore, there is no property for specifying a particular key alias or its password. In this circumstance you don’t have any choice but to make the passwords the same. Stack Overflow
默认情况下,Tomcat使用的证书,keypass和storepass 必须相同,否则证书解析会出错。
水平有限,请多多指正