Springmvc项目关于安全的一些知识点与补充2

Springmvc项目关于安全的一些知识点与补充2

经验文章nimo972025-02-21 13:05:2319A+A-

上一节说到如何在tomcat里面加入ssl单向认证,可能很多人对此看得不是很明白,这个与我们的spring MVC项目有什么安全性相关,在tomcat加入了ssl单向认证就可以保证安全了吗?这里我将一一解释。

首先,我们需要了解几个知识点。

1、ssl

关于ssl,它是一种协议,就是在网络传输数据一种通信协议。它的全称是Secure Sockets Layer ,就是安全套接层的意思,它是专门为网络通信提供安全及数据完整性的一种安全协议SSL,大家可以看回上一节说到的单双向的解释就可以知道。它和TLS一起在传输层对网络连接进行加密。

它的功能主要就是:认证用户和服务器,保证我们的数据能够准确的发送到客户端和服务器,加密数据保证了在传输的过程中,不被网络监听者篡改。保证了数据传输的完整性。

2、https

https,它也是一个通信协议,可以说它是我们平时进行网站访问的http的进化版,我们的HTTP协议平时在我们进行网络传输的时候,是没有进行加密与验证的,而HTTPS就是在http层加入了ssl层,使得我们在数据交换的时候加入了加密与验证的功能,从而保证了数据的安全性。而https访问网站的时候,就说明了我们进行数据传输是使用ssl协议的

3、ca与ca证书

CA,Certificate Authority,它是CA 是数字证书认证中心的简称,它的作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改,以及对证书和密钥进行管理, CA证书,它是由公钥用户信息、公钥、权威机构的签字和有效期组成,有了这些信息我们就可以对我们的网站使用公钥进行验证,简单的来说,CA就是第三方可以让我们公众用户信任的认证机构,它负责对证书的认证与管理。国内的证书比较多的是wosign颁发的。

4、自制证书,就是我们自己制作SSL证书,我们知道CA证书是第三方认证机构颁发的证书,有了它我们就可以实现了我们的需求了。我们还需要自己制作证书?那是有必要的,因为我们现在证书认证,每年需要交纳一定的费用,而且费用不低。所以有自己制作证书的需要,不过自制证书与CA证书存在最大的安全性问题是,自制证书不能销毁,而CA证书可以销毁的,假如你的私钥被其它人拿到,那么他们可以伪装成你,然后对你的用户进行各种通信,而且自制证书还需要用户的客户端进行安装证书,而CA证书只有安装一次就可以对所以由CA证书颁发的网站进行认证,所以对于数据比较严谨的网站与应用一定要使用CA证书。

5、加密与解密:就是我们平时数据传输的时候把明文转换成我们无法阅读的数据(密文),而解密则是把密文转换成我们可以阅读的明文,比如是我们发送一条信息,内容为“a”,我们可能通过移位的加密算法,将字母移动一位传输,变成了“b”,然后在对方接受到数据的时候,我们解密需要将“b”移位减1,这样就可以得到“a”.

6、spring mvc、tomcat、ssl,https、ca、自制证书之间的关系

由于我们的spring mvc 是使用了tomcat服务器,所以我们的spring mvc项目是运行在tomcat上的,而

https是有ssl+http组合而成,通过HTTPS来访问我们的spring mvc 项目就可以实现安全的通信,CA就是颁发ssl证书的机构,而自制的证书可以在我们本地实现ssl的加密传输。

7、如何让我们的网站支持HTTPS

有两种方式,1是我们可以通过由CA机构颁发证书,大家可以去wosign看看,2是通过自制证书实现,我在上一节一节说到tomcat+ssl单向认证。

以下是头条加入了SSL证书的显示效果。

上一节我们说到双向认证,说到双向认证,那么我们就需要制作两个证书,服务器和客户端的。

tomcat 双向认证证书的制作

首先安装好java的环境。我们是使用java的keytool制作的。

1、服务器证书生成

keytool -genkey -v -alias yeehotserver -dname "CN=localhost" -keyalg RSA -keypass ming1234 -keystore server.keystore -storepass ming1234 -validity 3650

这里alias是别名,keypass、storepass就是密码,storepass就是存储的名字。validity有效期多少天。表示绑定域名CN=localhost

2、客户端证书生成

keytool -genkey -v -alias yeehotclient -dname "CN=ming" -keyalg RSA -keypass ming1234 -keystore client.p12 -storepass ming1234 -storetype PKCS12 -validity 3650

这里需要保存成.p12格式,做苹果推送证书我们经常会见到的。

3、服务器信任客户端证书

我们操作到这里,服务器证书和客户端证书似乎没有一点关系,我们为了可以让服务器对客户端的证书进行信任,这样才可以进行认证。我们首先需要将.p12转换成.cer证书

keytool -export -alias yeehotclient -file yeehotclient.cer -keystore client.p12 -storepass ming1234 -storetype PKCS12

接着将证书导入到服务器证书

keytool -import -v -alias yeehotclient -file yeehotclient.cer -keystore server.keystore -storepass ming1234

最后输入“是”

这个时候已经存储到server.

4、客户端信任服务器证书

因为我们是双向SSL认证,那么我们的客户端也要验证服务器证书

导出服务器证书

keytool -keystore server.keystore -export -alias yeehotserver -file server.cer

配置tomcat

我们打开tomcat的配置文件。conf下的server.xml

我们找到注释的

把它修改成我们的配置文件

protocol="HTTP/1.1"

minSpareThreads="150" maxSpareThreads="75"

enableLookups="true" disableUploadTimeout="true"

acceptCount="100" maxThreads="200"

scheme="https" secure="true" SSLEnabled="true"

clientAuth="true" sslProtocol="TLS"

keystoreFile="./conf/server.keystore"

keystorePass="ming1234"

truststoreFile="./conf/server.keystore"

truststorePass="ming1234"

/>

属性说明:

clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证

keystoreFile:服务器证书文件路径

keystorePass:服务器证书密码

truststoreFile:用来验证客户端证书的根证书

truststorePass:根证书密码

这是如果我们没有在浏览器安装客户端的证书的,无法显示网页,为了区别我们在不同的电脑验证一下。

我们可以验证一下证书的安装。

我们把生成的证书yeehotclient.cer双击安装到客户端 IE 浏览器。这个时候导入了我们客户端的证书。

输入https://localhost:8443/,可以看到页面。

我们可以看服务器的已经使用了刚刚创建的localhost证书。

对于SSL配置可能还会遇到一些问题,tomcat的不同版本问题,还有域名的配置,这个大家可以

今天的配置就说到这里,欢迎订阅我的头条号:一点热

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7