Java Tomcat http转https

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语法,此处用的大多是缺省值的方式。
这五步好了后,到指定的文件夹中查看是否有这五个文件:

Java Tomcat http转https_第1张图片


然后是最重要的一步:

将客户端证书导入到服务器证书库(使得服务器信任客户端证书)

keytool -import --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选项->高级,如图:
Java Tomcat http转https_第2张图片

2、然后导入服务端信任证书,不能双击“server.cer”,需要收到导入到手信任的根证书机构中去。到Internet选项->内容,如图:

Java Tomcat http转https_第3张图片

点击证书->受信任的根证书颁发机构,如图:

Java Tomcat http转https_第4张图片

点击导入->下一步,如图:

Java Tomcat http转https_第5张图片

浏览自己存放的地址找到server.cer文件,然后点击下一步,如图:

Java Tomcat http转https_第6张图片

选择如下图->下一步

Java Tomcat http转https_第7张图片

按照如下图->完成

Java Tomcat http转https_第8张图片

弹出警告框->是

Java Tomcat http转https_第9张图片
弹出下框,代表服务器导入成功

Java Tomcat http转https_第10张图片

然后查看是否存在,如图:

Java Tomcat http转https_第11张图片


3、找到存放的路径双击“client.p12”,将服务端给客户端颁发的证书导入到浏览器中。


Java Tomcat http转https_第12张图片

双击后->下一步

Java Tomcat http转https_第13张图片

找到存放的路径->下一步


Java Tomcat http转https_第14张图片

输入生成密钥时的密码:123456 -> 下一步

Java Tomcat http转https_第15张图片

按照如下图 -> 下一步

Java Tomcat http转https_第16张图片

按照如下图 -> 下一步

Java Tomcat http转https_第17张图片


完成
Java Tomcat http转https_第18张图片


说明:项目在eclipse启动的话,就改所用的Tomcat的server.xml配置文件;也可以把项目导出为war包,放到Tomcat的webapps文件下,会自动识别的,然后把此Tomcat的server.xml文件配置一下,再startup。

此时输入http://127.0.0.1:8080/deliver-web时,会弹出安全证书,点击确认按钮,即可访问,且地址是发生改变,如图:
Java Tomcat http转https_第19张图片


点击确认后:



此为我的登录页面,且地址也发生改变了,我的测试就到这里了。我的项目是部署到webservice的,然后我的客户端登不上去,也就没有测试过webservice的,我还得找找怎么配置webservice的,有朋友知道的话,可以讲讲哦,第一次写这个,写的不好,请不见怪!

我是依照这个来的,看不懂可以去看看:http://www.blogjava.net/icewee/archive/2012/06/04/379947.html

你可能感兴趣的:(Java Tomcat http转https)