通过使用SSL对他有了一个初步的了解
整理了一下:
由于SSL的使用比较繁琐,所用工具较多,首先将需要的软件与jar包列举如下:
1、
Tomcat 5.0
2、
Microsoft visual c++ 6.0
3、
Jsse1.0.2
4、
MASM32
(汇编编译器)
5、
Openssl0.9.9.6
6、
ActivePerl-5.8.0.806-MSWin32-x86
1
、生成CA私钥
openssl genrsa -out ca/ca-key.pem 1024
。
2
、生成待签名证书
openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
。
3
、用CA私钥进行自签名
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 365
。
1
、生成KeyPair
%JAVA_HOME%/bin/keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=Beijing, st=Beijing, c=CN" -keystore server/server_keystore
2
、生成待签名证书
%JAVA_HOME%/bin/keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file server/server.csr -keypass changeit -keystore server/server_keystore -storepass changeit
3
、用CA私钥进行签名
openssl x509 -req -in server/server.csr -out server/server-cert.pem –CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 365
4
、导入信任的CA根证书到JSSE的默认位置(%JAVA_ROOT %/jre/security/cacerts)
%JAVA_HOME%/bin/keytool -import -v -trustcacerts -storepass changeit -alias my_ca_root -file ca/ca-cert.pem -keystore %JDK_HOME%/jre/lib/security/cacerts
5
、把CA签名后的server端证书导入keystore
%JAVA_HOME%/bin/keytool -import -v -trustcacerts -storepass changeit -alias tomcat_server -file server/server-cert.pem -keystore server/server_keystore
6
、查看server端证书
keytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts
keytool -list -keystore server/server_keystore
首先找到以下内容,去掉对其的注释。然后参照红色部分修改。如果配置Tomcat不验证客户身份,可以设置clientAuth="false"。 下面实例采用客户端不验证方式:
<Connector
enableLookups="true"
port="8443"
redirectPort="-1"
scheme="https"
keystoreFile="%TOMCAT_HOME%/conf/server_keystore"
keystorePass="changeit"
sslProtocol="TLS"
keystoreType="JKS"
algorithm="SunX509"
clientAuth="false"
acceptCount="10">
</Connector>
|
然后把文件server/server_keystore复制到目录%TCAT_HOME%/conf/下。
1
、生成client私钥
openssl genrsa -out client/client-key.pem 1024
2
、生成待签名证书
openssl req -new -out client/client-req.csr -key client/client-key.pem
3
、用CA私钥进行签名
openssl x509 -req -in client/client-req.csr -out client/client.crt -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 365
4
、生成client端的个人证书
因为JSSE1.0.2没有完全实现了对PKCS#12格式文件的操作(只能读取,不能输出),所以在这里需要用openssl制作client端的个人证书(包含私钥)。
openssl pkcs12 -export -clcerts -in client/client.crt -inkey client/client-key.pem -out client/client.p12
5
、安装信任的根证书
把ca/ca-key.pem改名为ca/ca-key.cer,在client端的IE中使用‘工具’、‘Internet选项’、‘ 内容’、‘证书 ’、‘导入’把我们生成的CA根证书导入,使其成为用户信任的CA。