制作证书
下面详细介绍了制作证书的基本步骤。部分命令并没有提供全部参数,运行时仍需交互输入部分信息,特别是CN、OU、O、L和ST等等。此外,一些命令的参数,如别名,有效期等等,可以根据情况自行定义。
2.1. 生成CA私钥和自签名根证书
l 生成CA私钥
openssl genrsa -out ca-key.pem 1024
l 生成待签名证书
openssl req -new -out ca-req.csr -key ca-key.pem
l 用CA私钥进行自签名
openssl x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days 365
2.2. 生成server端证书
l 生成kay pair
keytool -genkey -alias kk -validity 365 -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -dname "cn=hostname, ou=bbb, o=aaa, l=Beijing, st=Beijing, c=CN" -keystore server.keystore
l 生成待签名证书
keytool -certreq -alias kk -sigalg MD5withRSA -file server.csr -keypass changeit -keystore server.keystore -storepass changeit
l 用CA私钥进行签名
openssl x509 -req -in server.csr -out server-cert.pem -CA ca-cert.pem -CAkey ca-key.pem -days 365 –CAcreateserial
l 导入信任的CA根证书到JSSE的默认位置
keytool -import -v -trustcacerts -storepass changeit -alias root -file ca-cert.pem -keystore $JAVA_HOME/jre/lib/security/cacerts
l 把CA签名后的server端证书导入keystore
keytool -import -v -trustcacerts -storepass changeit -alias kk -file server-cert.pem -keystore server.keystore
2.3. 生成client端证书
l 生成client私钥
openssl genrsa -out client-key.pem 1024
l 生成待签名证书
openssl req -new -out client-req.csr -key client-key.pem
l 用CA私钥进行自签名
openssl x509 -req -in client-req.csr -out client.crt -signkey client-key.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 365
l 生成client端的个人证书
openssl pkcs12 -export -clcerts -in client.crt -inkey client-key.pem -out client.p12
3. 安装客户端证书
以在IE上安装客户端证书为例。“Internet选项”->“内容”-> “证书” -> “导入”。将ca-cert.pem重命名为ca-cert.cer然后导入。这是CA根证书,导入后使其成为客户信任的CA。导入client.p12,这是PKCS12格式的个人证书。IE能够识别证书类型并根据类型确定证书存储位置。
这些是在liunx环境下制作的,因为我在windows下没有安装openssl
配置Tomcat6
1) 配置server.xml文件
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="c:/zs/server.keystore"
keystorePass="changeit" />