SSL 密钥对生成及应用

生成根证书

Ø         生成CA私钥

u       openssl genrsa -out ca/ca-key.pem 1024

Ø         用刚才生成的CA私钥 生成一个待签名的证书 ca-req.csr(Certificate Signing Request)

u       openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config "E:/Program Files/Java/openssl/openssl.cnf“

Ø         CA私钥ca-key.pem自签名ca-req.csr,得到ca-cert.pem 这个就是我们导入IECA根证书

u       openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

     这里我把有效期写了10年,因为这是根证书,后面serverclient端的证书都要用它来签名,所以有效期很长,而且这个文件很重要,一定妥善保管,如果丢了它就无法再发布新的client端证书。

根证书保护

Ø         为了这个证书的安全,我们使用一下命令为其加密。

u       openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca-cert.pfx

这个pfx是加密的,使用时需要输入密码来解出需要的ca-cert.pem ca-key.pem

Ø         PKCS12格式的CA证书导出不加密的CA证书: work/ca/ca-cert.pem

u       openssl pkcs12 -in ca/ca-cert.pfx -clcerts -nodes -nokeys -out ca/ca-cert.pem.1

这个文件里多了4行注释,下面命令去掉它也可以手动删掉:

u       sed.exe -e '1,4d' work/ca/ca-cert.pem.1 > work/ca/ca-cert.pem

Ø         PKCS12格式的CA证书导出CA私钥: ca/ca-key.pem

n         openssl pkcs12 -in ca/ca-cert.pfx -clcerts -nodes -out file.pem

openssl rsa –in ca/file.pem -out ca/ca-key.pem

生成服务端证书

Ø         生成server密钥对 保存在server/server_keystore里。

u       keytool -genkey -alias tomcat5_server -validity 365 -keyalg RSA -keysize 1024 -keystore server/server_keystore

Ø         使用上一步的server_keystore生成待签名证书server.csr

u       keytool -certreq -alias tomcat5_server -sigalg MD5withRSA -file server/server.csr  -keystore server/server_keystore

Ø         使用CA私钥ca-key.pemca-cert.pem 签名server.csr 生成 server-cert.pem

u       openssl x509 -req -in server/server.csr -out server/server-cert.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 365

导入服务端证书

Ø         导入CA根证书

u       keytool -import -v -trustcacerts -alias tomcat5_server -file ca/ca-cert.pem -keystore cacerts

拷贝cacerts文件到C:/j2dk/jre/lib/security目录。这很重要。

Ø         导入服务器证书到server_keystore.

u       keytool -import -v -trustcacerts -alias tomcat5_server -file server/server-cert.pem -keystore server/server_keystore

我们生成的server-cert.pem证书是放在cacertsserver_keystore里来使用的。这两个文件有一个相互校验过程。如果不匹配,工作则不正常。

生成client端证书

Ø         生成客户端密钥

openssl genrsa -out client/client-key.pem 1024

Ø         使用 client-key.pem 生成client-req.csr. 准备签名

openssl req -new -out client/client-req.csr -key client/client-key.pem -config "E:/Program Files/Java/openssl/openssl.cnf"

Ø         使用ca-cert.pem ca-key.pem签名client-req.csr 产生client-cert.pem证书。

openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAserial ca/ca-cert.srl -days 365

Ø         生成Client端可以导入的个人证书 pkcs12

openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12

这里有个密码要输入,在导入client.p12IE里时也需要输入

应用到Tomcat

server/server_keystore 拷贝到tomcat_home/conf/ 修改 server.xml文件 如下

    <Connector port="8443" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="${catalina.home}/conf/server_keystore" keystorePass=yourpassword“/>

    clientAuth = “true” 表示要客户端认证,False表示不认证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值