Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式
目前越来越多的应用和网站,开始注重安全性的问题,关于我们的web项目的几个安全知识点,不得不讲解一下,这里我主要讲述关于tomcat如何支持HTTPS连接访问,RSA公钥和私钥的制作。这个对于我们整个系统的安全性都起了关键性作用。对于RSA的一些说明,以及Java的实现方法这个我将会在下一个章节介绍。
1、tomcat项目部署SSL安全连接。
这里涉及两个概念,单向认证和双向认证。
单向认证,就是client->sever发送数据 ,server收到数据用私钥对data加密,然后把加密的data和公钥给client,client通过公钥对数据加密发送到server,server用私钥解密,如果解密成功,说明是来自该服务器的.简单的来说,就是客户端发送带了公钥加密的数据给服务器验证,但是这个步骤是没有经过客户端的验证的。只是对服务器进行验证,所以我们单向的认证,只需要配置站点就可以了。
双向认证,就是client->server发送数据的时候,把数据加密后并且带上client自己的证书,发送给server,server收到后,用client带的证书,对消息解密,然后用sever的证书对消息加密并且把server的证书发送给client,client收到后,用sever的证书对信息解密。然后用server的证书加密,再用client的证书加密。这样再把client的证书和加密信息发送给server。server收到信息后,用client的证书进行解密,这样可以确保是有client发送过来的。然后再用server端的私钥对消息解密。这样就可以得到明文了。
安装环境 :java+tomcat+单向认证
1、首先创建一个keystore,这里注意就是我们需要安装好Java环境,
在终端输入如下命令:
keytool -genkey -v -alias yeehot -keyalg RSA -validity 3650 -keystore ./yeehot.keystore
这里的yeehot,是自定义的名字。以及保存到当前目录下
这个时候会提醒你创建密码的,接着你按照如下的方式和提示输入自己相应的信息
最后打一个字:是
按回车,完成操作。
对于tomcat配置
找到tomcat的conf目录,打开server.xml
找到原来已经注释的8443端口
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
然后我们根据这些信息改成我们自己的信息,我们首先把刚刚的keystore复制到这个文件夹下
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="./conf/yeehot.keystore" keystorePass="ming1314"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />
这个时候我们启动tomcat
然后在服务器输入https://localhost:8443/可以看到下面的信息。说明我们配置成功了。可以访问https连接了。
我们点击下方的高级,可以访问tomcat的主页,此时也是使用HTTPS的连接的
2、RSA公私钥的制作。
首先,你必须按照openssl工具,并且编译,由于我这里是使用MAC系统,自带了openssl,直接输入openssl就可以了。
对于windows的可以直接去支付宝的商家服务那里下载一个二进制文件进行生成也行。如果找不到可以给我留言。
对于生成RAS公私钥主要有一下几个步骤。
生成RSA私钥
openssl>genrsa -out rsa_private_key.pem 1024
生成RSA公钥
openssl>rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
将RSA私钥转换成PKCS8格式
openssl>pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
如何生成证书:
1)输入openssl
2)这个时候生成RSA私钥:
genrsa -out rsa_private_key.pem 1024
3)接着我们生成公钥
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
4)将RSA私钥转换成PKCS8格式
这个时候在我们的目录下会生成我们需要的公钥和私钥
完整的操作如下: