步骤:
一、 创建一个目录,名称为CA
1. 生成CA密钥
#openssl genrsa –des3 –out ca.key 2048
Enter password phrase for ca.key: 123456
2. 生成CA根证书
#openssl req –new –x509 –days 3650 –key ca.key –out ca.crt
Enter password phrase for ca.key: 123456
Country Name: CN
State or Province: Jiangsu
Locality Name: Wuxi
Organization Name: Nfschina-Wuxi
OU: eGovernDept
CN: NfschinaCA
Email: ca@nfs-wuxi.com
此时已经生成CA密钥文件ca.key和CA根证书ca.crt
3. 查看密钥和证书
1) 查看密钥
#openssl rsa – noout –text –in ca.key
2) 查看根证书
#openssl x509 –noout –text –in ca.crt
二、 为Tomcat创建SSL连接密钥以及服务端证书
1. 创建目录结构
2. 更新文件内容
1) 设置index.txt文件为空文件
2) serial文件内容是合法的16进制数字,例如0001
#echo –n 0001 > serial
3. 为tomcat生成SSL密钥
#keytool –genkey –alias tomcat_server –validity 3650 –keyalg RSA –keysize 1024 –keypass 123456 –storepass 123456 –keystore keystore/192.168.0.180.key
First and last name: 192.168.0.180
:eGovernDept
:Nfschina-Wuxi
: Wuxi
: Jiangsu
:CN
此时192.168.0.180.key密钥文件已经存放在keystore目录下
4. 生成证书申请
#keytool –certreq –alias tomcat_server –sigalg MD5withRSA –file csr/192.168.0.180.csr –keypass 123456 –storepass 123456 –keystore keystore/192.168.0.180.key
此时192.168.0.180.csr证书申请文件在csr目录下
5. 用CA根证书为tomcat_ssl签署证书
#openssl ca –in csr/192.168.0.180.csr –out crt/192.168.0.180.crt –keyfile ../CA/ca.key –notext –cert ../CA/ca.crt –config /etc/ssl/openssl.cnf
此时192.168.0.180.crt证书文件已经存放在crt目录下了
6. 将CA根证书和tomcat_ssl证书植入到tomcat_ssl_server密钥文件中
#keytool –import –v –trustcacerts –alias NfschinaCA –file …/CA/ca.crt –storepass 123456 –keystore keystore/192.168.0.180.key
#keytool –import –v –alias tomcat_server –file crt/192.168.0.180.crt –storepass 123456 –keystore keystore/192.168.0.180.key
此时keystore/192.168.0.180.key中已经包含了根证书和刚刚为其签发的证书
利用下面这条命令可以查看
#keytool –list –v –keystore keystore/192.168.0.180.key
注意:
上述3个别名tomcat_server应该保持一致,因为它生成密钥时,密钥文件中已经默认存放一个自签名的证书,最后一步导入证书使用相同的别名可以覆盖,否则在tomcat进行ssl连接时指定该默认证书
三、 生成客户端证书
1. 生成私钥
#openssl genrsa –des3 –out keystore/jinjian.key 1024
此时生成了私钥
利用下面这条命令可以查看私钥
#openssl rsa –noout –text –in keystore/jinjian.key
2. 生成签证请求
#openssl req –new –days 3650 –key keystore/jinjian.key –out csr/jinjian.csr –config /etc/ssl/openssl.cnf
注意:
修改/etc/ssl/openssl.cnf文件
a) 修改默认认证时间
default_days = 365 à default_days = 3650
b) 修改默认CA匹配策略
[policy_match]
countryName = match à countryName = optional
stateOrProvinceName = match à stateOrProvinceName = optional
organizationName = match à organizationName = optional
organizationalUnitName = optional à organizationUnitName = optional
commonName = supplied à commonName = optional
emailAddress = optional à emailAddress = optional
c) AU à CN
[req_distinguished_name]
countryName_default = optional à countryName_default = optional
3. 用CA和私钥签名
#openssl ca –in csr/jinjian.csr –out crt/jinjian.crt –cert ../CA/ca.crt –keyfile ../CA/ca.key –notext –config /etc/ssl/openssl.cnf
利用这条命令查看证书
#openssl x509 –in crt/jinjian.crt –noout –text
4. 将私钥和证书合成PKCS12格式
#openssl pkcs12 –export –inkey keystore/jinjian.key –in crt/jinjian.crt –out crt/jinjian.p12