Java Tomcat http转https

本文详细介绍了一种将HTTP网站转换为HTTPS的安全配置流程。包括生成证书、配置web.xml、Tomcat服务器及网页设置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 --alias client -file E:\ssl\client.cer -keystore E:\ssl\server.keystore -storepass 123456

注意:一定要看到已添加或者成功的字样!!!

第二步:配置web.xml文件

打开应用的web.xml文件,增加配置如下:
<!-- 强制SSL配置,即普通的请求也会重定向为SSL请求 -->  
   <security-constraint>
        <web-resource-collection>
            <web-resource-name>SSL</web-resource-name>
            <url-pattern>/*</url-pattern><!-- 全站使用SSL -->
        </web-resource-collection>
        <user-data-constraint>
            <description>SSL required</description>
          <!--    CONFIDENTIAL: 要保证服务器和客户端之间传输的数据不能够被修改,且不能被第三方查看到
            INTEGRAL: 要保证服务器和client之间传输的数据不能够被修改
            NONE: 指示容器必须能够在任一的连接上提供数据。(即用HTTP或HTTPS,由客户端来决定) -->
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

第三步:配置Tomcat服务器

打开server.xml找到port=“8443”
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" />
-->

干掉注释,并将内容改为

<Connector SSLEnabled="true" acceptCount="100" clientAuth="true" disableUploadTimeout="true" enableLookups="false" keystoreFile="E:/ssl/server.keystore" keystorePass="123456" maxThreads="25" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" truststoreFile="E:/ssl/server.keystore" truststorePass="123456"/>

我改为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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值