一.证书结构说明:
1.我们需要生成的证书根证书:需要三个证书 根证书, 服务器二级证书 ,客户端二级证书.
关系如下:
CA-- (ca.crt,ca_keystore)
-----server (server_keystore)
-----client (tomcat_client.pfx)
2.证书格式,由于服务器是JAVA写的,客户是安罩或者WINDOWS
所以证书,JAVA需要存放在KEYSTORE文件中(java存储格式);而客户端需要存放为CRT证书p12私钥证书格式.
二.证书生成工具:
1.证书生成工具需要Openssl 与JAVA的keytool 工具
keytool安装说明:
安装JAVA JDK环境会带有KEYTOOL工具,文件存放在JAVA安装路径的%JAVA_HOME%/bin;目录中配置环境变量PATH,加入%JAVA_HOME%/bin
OPENSSL安装进行说明:
假如安装路径如下:
openssl安装在D:\OPENSSL 我OPENSSL工作目录D:\CA
安装OPENSSL完成后需要进行如下简单配置:
1)建立工作目录下(假如在D:\CA),在CA目录下新建目录 demoCA、demoCA/certs、demoCA/certs 、demoCA/newcerts
2) 在demoCA建立一个空文件 index.txt
3) 在demoCA建立一个文本文件 serial, 没有扩展名,内容是一个合法的16进制数字,例如 0000
4) 配置文件修改: 找到D:\OPENSSL\openssl.cfg作如下修改
default_days =1000
[policy_match ]
countryName = optional
stateOrProvinceName = optional
organizationName =optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
这样就安装完成。
证书生成如下:
1.在CMD下进入刚才我们的工作目录 d:\ca
输入 1.D:
2. CD CA
2. 生成CA的自签名证书
openssl req -new -x509 -keyout ca.key -outca.crt -config d:\openssl\openssl.cfg
注意要把自己密码记到。此处密码为123456 注意密码要一致,最后输入keystore按提示可以直接回车表示密码与KEY一致
把CA.CRT存放到JAVA格式中,文件名为ca_keystore
keytool -import -v -alias caroot -file ca.crt -storepass 123456-keystore ca_keystore
3. 生成server端证书
1) 生成KeyPair生成密钥对
keytool -genkey -alias tomcat_server-validity 365 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456-keystore server_keystore
输入common name时,要和服务器的域名保持一致。此处为192.168.20.104
2) 生成证书签名请求
keytool -certreq -alias tomcat_server -sigalgMD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystoreserver_keystore
3) 用CA私钥进行签名,也可以到权威机构申请CA签名。
openssl ca -in tomcat_server.csr-out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -config d:\openssl\openssl.cfg
其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。
4) 导入信任的CA根证书到keystore
keytool -import -v-trustcacerts -alias my_ca_root -file ca.crt -storepass 123456 -keystoreserver_keystore
5) 把CA签名后的server端证书导入keystore
keytool -import -v -alias tomcat_server -filetomcat_server.crt -storepass 123456 -keystore server_keystore
6) 查看server端证书
keytool -list -v -keystoreserver_keystore
可以看到tomcat_server的证书链长度是2
4. 生成client端证书
1) 生成客户端CSR
openssl genrsa -des3 -outtomcat_client.key 1024
openssl req -new -key tomcat_client.key -outtomcat_client.csr -config d:\openssl\openssl.cfg
2) 用CA私钥进行签名,也可以到权威机构申请CA签名
openssl ca -in tomcat_client.csr -outtomcat_client.crt -cert ca.crt -keyfile ca.key -notext -config d:\openssl\openssl.cfg
3) 生成PKCS12格式证书
openssl pkcs12 -export -inkeytomcat_client.key -in tomcat_client.crt -out tomcat_client.pfx
如果需要查看证书内容使用Keytool列出pkcs12证书的内容:
keytool -rfc -list -keystoretomcat_client.pfx -storetype pkcs12
keytool-list -v -keystore tomcat_client.pfx -storetype pkcs12
这样就完成了证书生成.
生成根证书 CA.CRT ca_keystore 密码123456
sever证书存放在keystore中 server_keystore 密码123456
client证书tomcat_client.pfx密码123456