将tomcat项目从http协议转https协议(解决已解密的登陆请求安全问题)

• 原因:登陆中敏感信息(例如:密码)都是明文传输的

• 解决方案:对传输的明文进行加密,然后在服务器端解密

• 具体实现:

1、在服务器端通过创建工具类RSAUtil,通过RSAUtil工具类可以获取RSA加密算法的公钥、私钥、加解密方法

2、前端通过该工具类获得公钥对密码进行加密,使用加密后的密文进行传输

引入jsencrypt.min.js

3、在服务器端接收到密文之后进行解密

使用上述方法虽然对密码进行了加密,但是通过网络劫持一样可以获得加密后的密码,只要跳过加密的代码,使用加密后的密码仍然可以登录到系统,没有解决根本问题

应该使用https具有安全性的ssl加密传输协议,这样可以做到防劫持

1、使用jdk自带的keytool工具生成免费的SSL证书(windows和linux系统相同)

 生成服务器端秘钥:keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -ext san=ip:172.16.124.79 -validity 365 -keystore C:/tomcat.keystore -storepass 123456

这里最主要的是名字与姓氏,这里填写主机名、ip地址或域名,其他可以选填

参数解释

-alias tomcat(别名)

-keypass 123456(别名密码)

-keyalg RSA(算法)

-keysize 1024(密钥长度)

-ext san=ip:172.16.124.79 (设置可以通过ip访问)

-validity 365(有效期,天单位)

-keystore C:/tomcat.keystore(指定生成证书的位置和证书名称)

-storepass 123456(获取keystore信息的密码)

 为客户端生成证书:keytool -genkey -alias client -keypass 123456 -keyalg RSA -storetype PKCS12 -keypass 123456 -storepass 123456 -keystore C:/client.p12

操作和上面一样

参数解释

-storetype PKCS12(证书格式)

 

• 服务器添加客户端证书信任

将.p12格式的证书导出为Cer文件,方便导入证书库中:keytool -export -alias client -keystore C:/client.p12 -storetype PKCS12 -keypass 123456 -file C:/client.cer

将client.cer导入到服务器证书中,添加为一个受信任证书:keytool -import -v -file C:/client.cer -keystore C:/tomcat.keystore -storepass 123456

2、在tomcat的server.xml中配置开启SSL认证

• 在server.xml中加入下面配置

配置项

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"

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

                    clientAuth="false" sslProtocol="TLS" keystorePass="123456" keystoreFile="C:/tomcat.keystore" />

这里说明一下,如果是tomcat7需要将将protocol="HTTP/1.1"改成protocol=” org.apache.coyote.http11.Http11Protocol”,(Tomcat提供了两个SSL实现,一个是JSSE实现,另一个是APR实现,6.0默认使用JSSE实现,而7.0默认使用APR实现,本文中的采用的是jsse的实现)

3、在web.xml中加入配置是http请求重定向到https

配置项

<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>

 通过这样就把tomcat项目从http协议转成了https协议

说明:使用自签名SSL证书是不受浏览器信任的,所以直接将自签名的证书导入受信任跟证书颁发机构浏览器也会提示不安全,所以只有通过浏览器下载证书导入到受信任跟证书颁发机构浏览器才会信任该证书。

转载于:https://my.oschina.net/u/3201295/blog/3009939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值