1、证书生成算法
1、生成服务器证书apache
(1)打开打开命令控制台,进入jdk的bin目录浏览器
cd D:\Program Files\jdk1.6.0_45\bintomcat
(2)keytool为Tomcat生成证书(“-validity 36500”证书有效期,36500表示100年,默认值是90天)安全
keytool -genkey -v -alias tomcat -keyalg RSA -keystore E:\tomcat.keystore -validity 36500服务器
2、生成客户端证书测试
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore E:\mykey.p123d
3、让服务器信任客户端证书server
(1)因为不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用以下命令:xml
keytool -export -alias mykey -keystore E:\mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:\mykey.cer
(2)将该文件导入到服务器的证书库,添加为一个信任证书使用命令以下:
keytool -import -v -file E:\mykey.cer –keystore E:\tomcat.keystore
(3)经过 list 命令查看服务器的证书库,能够看到两个证书,一个是服务器证书,一个是受信任的客户端证书:
keytool -list -keystore E:\tomcat.keystore
4、让客户端信任服务器证书
把服务器证书导出为一个单独的CER文件提供给客户端,使用以下命令:
keytool -keystore E:\tomcat.keystore -export -alias tomcat -file E:\tomcat.cer
5、通过上面操做,生成以下证书:
其中 tomcat.cer 提供给客户端,tomcat.keystore供服务器使用
2、证书使用
1、服务器tomcat的配置
(1)打开Tomcat根目录下的/conf/server.xml,找到Connector port="8443"配置段,修改成以下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="E:/tomcat.keystore" keystorePass="123456" truststoreFile="E:/tomcat.keystore" truststorePass="123456" />
注释掉
<!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />-->
(2)测试服务端,IE浏览器输入访问地址
但因为是自签名的证书,因此浏览器会警告咱们不安全,选择继续:
能够看到能成功访问了(地址栏“证书错误”,此时数据已是使用HTTPS传输了)
2、导入服务器公钥证书(tomcat.cer)
因为是自签名的证书,为避免每次都提示不安全。这里双击tomcat.cer安装服务器证书。
注意:将证书填入到“受信任的根证书颁发机构”
再次从新访问服务器,会发现没有不安全的提示了,同时浏览器地址栏上也有个“锁”图标。
至此,就完成了配置。
注:因为jdk自带的keytool生成的签名属于弱签名算法(SHA-1),可是,SHA-1已通过时于是再也不推荐使用。新证书使用了更强的签名算法(好比SHA-256)。SHA-1的证书将从2017开始再也不被主流浏览器厂商视为安全的。
最后: 经过cmd,将签名文件从【***.keystore】文件转换成【***.p12】的文件,再转换成【***.jks】:
先将路劲切换至jre下的bin文件夹下,再经过命令查询,命令以下:
keytool -importkeystore -srckeystore 【绝对路径+***.keystore】 -srcstoretype JKS -deststoretype PKCS12 -destkeystore 【***.p12】
keytool -v -importkeystore -srckeystore 【绝对路径+***.p12】 -srcstoretype PKCS12 -destkeystore 【绝对路径+***.jks】 -deststoretype JKS
p12 证书提取pem证书和私钥
openssl pkcs12 -in server.p12 -clcerts -nokeys -password pass:111111 -out server.crt openssl pkcs12 -in server.p12 -nocerts -password pass:111111 -passout pass:111111 -out server.key