本文就是一个大概的思路,怕回头弄完这一块学点啥再全还给老师了--!
纯是自己的理解,不对的地方欢迎大家指正!:)
自己做CA玩呢,就先生成CA的私钥、待签名的证书、自签名的X509证书文件、还有我们的p12证书文件
因为发布服务器端证书和客户端证书需要未加密的CA根证书,所以还要从CA的根证书导出未加密的CA根证书
导出完事要把前4行的BagAttribute去掉(会用到cygwin的sed命令),不然等下keytool import会有问题
然后就是服务器端证书了,生成密钥对、待签名证书,用CA私钥签名生成X509证书文件
将服务器端的X509和CA的未加密的X509都导入keystore中(存放服务器端KeyPair的那个)
同时不要忘了把CA根证书导入到JSSE的默认位置----%JAVA_HOME%/jre/lib/security/cacerts
服务器端证书主要就是这个生成的keystore
客户端证书:生成私钥、待签名证书,用CA私钥签名后生成X509证书文件,最后生成p12个人证书
用户使用时直接把这个p12导入浏览器就好了
上面这些主要使用openssl和java的keytool工具,我也没玩的太明白,具体使用大家勤快点自己查查吧
然后就要修改tomcat的配置文件了,就是conf/server.xml
找到 <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->这一行
先把下边的注释标签删掉,tomcat默认是不启用SSL安全认证的
端口,可以自己改,注意改完了把上边non-SSL HTTP/1.1 Connector的redirectPort也改成一样的
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="F:/apache-tomcat-5.5.17/conf/ssl-test.net-tomcat.keystore" keystorePass="openssl"
truststoreFile="F:/apache-tomcat-5.5.17/conf/ssl-test.net-tomcat.keystore" truststorePass="openssl" />
keystoreFile和truststoreFile就是我们在生成服务器端证书的过程中生成的那个keystore
密码是自己设的,谁弄不对了败找我
这样就可以了,启动tomcat服务器可以看到Initializing Coyote HTTP/1.1 on http-8443
当你访问一个需要认证的页面时,就会看到浏览器的地址栏从http变成了https
你和网站之间的通信就在SSL协议的保护下进行了
大家有不明白的可以看我老师这篇http://blog.youkuaiyun.com/sunjavaduke/archive/2007/03/01/1518186.aspx