目前越来越多的应用和网站,开始注重安全性的问题,关于我们的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格式

这个时候在我们的目录下会生成我们需要的公钥和私钥

完整的操作如下:

Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式的更多相关文章

  1. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  2. Spring MVC学习笔记--认识SpringMVC

    Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框 ...

  3. 1.1(Spring MVC学习笔记)初识SpringMVC及SpringMVC流程

    一.Spring MVC Spring MVC是Spring提供的一个实现了web MVC设计模式的轻量级Web框架. Spring优点:网上有,此处不复述. 二.第一个Spring MVC 2.1首 ...

  4. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

  5. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客

    Spring MVC 学习总结(一)--MVC概要与环境配置   目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Mave ...

  6. Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)

    与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和 ...

  7. Spring MVC 学习 -- 创建过程

    Spring MVC 学习 -- 创建过程 Spring MVC我们使用的时候会在web.xml中配置 <servlet> <servlet-name>SpringMVC< ...

  8. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  9. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)

    很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互.RESTful则是一种软件架构风格.设 ...

随机推荐

  1. matlab2017a doc 关联注册码

    在 matlab 2017a 的命令行界面,输入doc **查看相关函数的帮助文档时,必须要关联注册码才可使用. 这种显然是在网络连接状况下给出的提示,也即主机处在网络连接状态,试图默认查找的网络中的 ...

  2. WebBrowser获取页面总高度

    case DISPID_DOCUMENTCOMPLETE: { #pragma region 获取页面总高度 HRESULT hr; IDispatch *pdisp; hr = m_pWebBrow ...

  3. spring boot 的常用注解使用 总结

    附:Spring Boot 官方文档学习(一)入门及使用见https://www.cnblogs.com/larryzeal/p/5799195.html @RestController和@Reque ...

  4. Android--ViewPager-Fragment

    package com.cnn.viewpager02; import java.util.ArrayList; import java.util.List; import android.os.Bu ...

  5. 如何启动和关闭MySQL?(四)

    分为: 图形化 命令行 方法一:在“计算机”的图标上右键,然后选择“管理”,双击“服务和应用程序”,然后选择“服务”,找到“MySQL”这个服务,然后点击“右键”,就可以进行“停止”和“重新启动”的操 ...

  6. 关于linq使用建议

    1.由于目前我做的项目使用的是SocanCode工具生成的三层框架,于是乎对于一些基本数据类型采用了可空类型编程 public CountryCode(int? id, string en_name, ...

  7. U-boot 启动内核

    1:什么是UBOOT,为什么要有UBOOT? UBOOT的主要作用是用来启动linux内核,因为CPU不能直接从块设备中执行代码,需要把块设备中的程序复制到内存中,而复制之前还需要进行很多初始化工作, ...

  8. TIME定时器

    一.定时器分类 STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器.基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定 ...

  9. 编译impala、拓展impala语法解析模块

    以前也编译过,但是每次编译都忘记怎么做,然后都得重新找需要下载的文件. 编译文件:buildall.sh 如果想只编译前端可以这样运行: buildall.sh -fe_only 编译时会去S3下载一 ...

  10. 第五章,AsyncTask和ProgressBar的练习(Android)

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...