在http下实现https的安全登录

来源:互联网 发布:设计软件下载 编辑:程序博客网 时间:2024/06/03 16:54

 

准备工作:

1、  第一步:为服务器生成证书 

A、打开cmd 输入 cd  %JAVA_HOME%/bin

B、使用keytoolTomcat生成证书,假定目标机器的域名是“localhost”keystore文件存放在“E:\rfocus.keystore”,使用如下命令生成:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore E:\tomcat.keystore
 
安装提示输入用户名,组织,地区,国家等,即可正确生成,该步为服务器生成了证书。单向认证的话,到这一步即可。但是这样产生的证书,因为没有经过专门的CA认证,浏览器访问时,会弹出警告。

 

 

2、  配置tomcat的文件配置service.xml和web.xml

Service.xml:

<Connector port="80"protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="443"/>

<Connector port="443"protocol="org.apache.coyote.http11.Http11Protocol"

                               SSLEnabled="true"

               maxThreads="150"scheme="https" secure="true"

               clientAuth="false"sslProtocol="TLS"

                               keystoreFile="E:/my.keystore"keystorePass="000000"/>

<Connector port="8009"protocol="AJP/1.3" redirectPort="443" />

 

         Web.xml:

在文件末尾添加以下内容:

<security-constraint>   

         <web-resource-collection>

                  <web-resource-name>SSL</web-resource-name> 

                  <url-pattern>/*</url-pattern>    

         </web-resource-collection>        

         <user-data-constraint>     

                   <transport-guarantee>CONFIDENTIAL</transport-guarantee>    

         </user-data-constraint>   

</security-constraint>

 

实现方案:

在http协议下的登录页面提交https表单请求登录,然后在后端处理完请求后,再跳转至http页面,在跳转页面进行判断是否登录成功。如果登录失败,则把跳转至登录页面,并返回错误消息;如果登录成功,则跳转至成功页面。

 

1、  登录页面,把form表单的请求设置为约定的https请求,在后端对该请求进行处理。

2、  处理完成之后,返回给页面redirect.jsp,  在redirect.jsp中对登录返回消息进行处理;

3、  如果登录成功,则设置cookie内容,把需要保存在cookie中的信息进行保存,并把当前页面herf到约定的http首页上,进行加载页面。

4、  如果登录失败,则跳转到约定的http登录页面上,并返回错误代码,在登录页面根据错误代码,进行相应的错误消息提示。

 

注意问题:

 

1、  需要约定http和https的端口,否则在页面跳转时,不能得到具体的跳转路径。建议为默认的端口号,即http:80,https:443

2、  不能使用ajax请求登录,因为ajax不能跨协议。

3、Session 和cookie的信息保存 和有效性:

         理论分析session和cookie都是相同和有效的。

经测试,与理论相同。

不用担心因为协议的不同而导致session或者cookie失效。

 

4、测试环境的端口配置

由于测试环境经常更换http的端口,这会导致夸协议请求登录会有问题。




0 0
原创粉丝点击