SSL-http转https
前言
因为项目经理口头叙说,要访问时为https访问,我就在网上各种找帖子,本人菜鸟没做过此类的事情,然后实验几次之后终于成功了。所以我先记录下来,以防下次需要或者复习。
第一步:生成证书
我这里即为服务端又为客户端,所以我生成了五个文件;
1、生成服务器证书库
2、生成客户端证书库
3、从客户端证书库中导出客户端证书
4、从服务器证书库中导出服务器证书
5、生成客户端信任证书库(由服务器证书生成的证书库)
这些证书是由jdk的keytool来生成的,可以参考以下密钥生成脚本,根据实际情况做必要的修改,注意:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意。
1、生成服务器证书库
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore E:\ssl\server.keystore -dname"CN=127.0.0.1,OU=bmsoft,O=bmsoft,L=bm,ST=ShangHai,c=sh" -storepass 123456
2、生成客户端证书库
keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore E:\ssl\client.p12 -dname"CN=client,OU=bmsoft,O=bmsoft,L=bm,ST=Shanghai,c=sh" -storepass 123456 -keypass 123456
3、从客户端证书库中导出客户端证书
keytool -export -v -alias client -keystore E:\ssl\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:\ssl\client.cer
4、从服务器证书库中导出服务器证书
keytool -export -v -alias server -keystore E:\ssl\server.keystore -storepass 123456 -rfc -file E:\ssl\server.cer
5、生成客户端信任证书库(由服务器证书生成的证书库)
keytool -import -v -alias server -file E:\ssl\server.cer -keystore E:\ssl\client.truststore -storepass 123456
keytool常用命令参数,大家可以去网上查下最基本的keytool语法,此处用的大多是缺省值的方式。
这五步好了后,到指定的文件夹中查看是否有这五个文件:
然后是最重要的一步:
将客户端证书导入到服务器证书库(使得服务器信任客户端证书)
keytool -import -v -alias client -file E:\ssl\client.cer -keystore E:\ssl\server.keystore -storepass 123456
注意:一定要看到已添加或者成功的字样!!!
第二步:配置web.xml文件
打开应用的web.xml文件,增加配置如下:
SSL
/*
SSL required
CONFIDENTIAL
第三步:配置Tomcat服务器
打开server.xml找到port=“8443”
干掉注释,并将内容改为
我改为443的原因是可以不用写端口号,直接ip+项目名称就可以进
例:http://127.0.0.1/deliver-web
直接变为:https://127.0.0.1/deliver-web
然后还可以把其他port的 redirectPort改为443,这样当输入
http://127.0.0.1:8080/deliver-web
直接变为:https://127.0.0.1/deliver-web
请注意:keystoreFile和truststoreFile的路径一定要写对!!!
第四步:网页配置
我用的是IE浏览器,1、首先去网页配置ssl的选项,选择->Internet选项->高级,如图:
2、然后导入服务端信任证书,不能双击“server.cer”,需要收到导入到手信任的根证书机构中去。到Internet选项->内容,如图:
点击证书->受信任的根证书颁发机构,如图:
点击导入->下一步,如图:
浏览自己存放的地址找到server.cer文件,然后点击下一步,如图:
选择如下图->下一步
按照如下图->完成
弹出警告框->是
弹出下框,代表服务器导入成功
然后查看是否存在,如图:
3、找到存放的路径双击“client.p12”,将服务端给客户端颁发的证书导入到浏览器中。
双击后->下一步
找到存放的路径->下一步
输入生成密钥时的密码:123456 -> 下一步
按照如下图 -> 下一步
按照如下图 -> 下一步
完成
说明:项目在eclipse启动的话,就改所用的Tomcat的server.xml配置文件;也可以把项目导出为war包,放到Tomcat的webapps文件下,会自动识别的,然后把此Tomcat的server.xml文件配置一下,再startup。
此时输入http://127.0.0.1:8080/deliver-web时,会弹出安全证书,点击确认按钮,即可访问,且地址是发生改变,如图:
点击确认后:
此为我的登录页面,且地址也发生改变了,我的测试就到这里了。我的项目是部署到webservice的,然后我的客户端登不上去,也就没有测试过webservice的,我还得找找怎么配置webservice的,有朋友知道的话,可以讲讲哦,第一次写这个,写的不好,请不见怪!
我是依照这个来的,看不懂可以去看看:http://www.blogjava.net/icewee/archive/2012/06/04/379947.html