码迷,mamicode.com
首页 > 其他好文 > 详细

SSL配置及练习

时间:2017-10-18 14:58:48      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:nbsp   contain   数据完整性   根目录   ssl协议   log   ica   mbed   int()   

1.SSL简介

SSL(Secure Sockets Layer,安全套结层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP与各种应用层协议之间,

为数据通信提供安全支持。SSL协议可分为俩层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能

的支持。SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等

 

如何在Spring Boot上配置SSL呢?

因为Spring Boot 用的是内嵌的Tomcat,因而我们做SSL配置的时候需要做如下的操作:

1.生成证书

每一个JDK或者JRE里都有一个工具叫keytool,它是一个证书管理工具,可以用来生成自签名的证书

技术分享

在C盘用户路径下,生成一个.keystore文件,就是我们要用的证书文件

2.Spring Boot配置SSL

将.keystore文件复制到项目的根目录,然后在application.properties中做如下SSL配置:

技术分享

此时,启动项目

技术分享

技术分享

至此SSL集成结束;

还可以进阶下:http 转向 https

 简单说:地址栏输入的是http,但是会自动转向到https

要实现这个功能,我们需配置TomcatEmbeddedServletContainerFactory,并且添加Tomcat的connector来实现。

 @Bean
    public EmbeddedServletContainerFactory servletContainerFactory() {
        TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory
                = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint =
                        new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");

                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcatEmbeddedServletContainerFactory.addAdditionalTomcatConnectors(httpConnector());
        return tomcatEmbeddedServletContainerFactory;
    }
@Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //设置有别于现有系统的端口号,监听此端口,实现转向
        connector.setPort(8443);
        connector.setSecure(false);
        //现有系统端口号
        connector.setRedirectPort(8080);
        return connector;
    }

技术分享

 

SSL配置及练习

标签:nbsp   contain   数据完整性   根目录   ssl协议   log   ica   mbed   int()   

原文地址:http://www.cnblogs.com/meiCode/p/7685847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!