Spring Boot入门教程(五十七): HTTPS - Go语言中文社区

Spring Boot入门教程(五十七): HTTPS


现在API接口一般要使用https协议,可以通过nginx反向代理实现,也可以让Spring Boot支持https协议。

一:证书文件获取方式

  • 从第三方可信证书认证商购买
  • 从云服务器免费申请(免费1年)
  • 自己生成(仅用于开发测试,浏览器会提示不安全)

使用JDK自带的命令keytool生成证书文件

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore /Users/mengday/Desktop/certificate.p12 -validity 365

在这里插入图片描述
其中密钥库口令和否正确两项是必须填写的,其它的都可以不填写,直接回车即可。

  • genkey 表示要创建一个新的密钥
  • alias 表示 keystore 的别名
  • keyalg 表示使用的加密算法是,这里使用的是RSA ,一种非对称加密算法
  • keysize 表示密钥的长度
  • keystore 表示生成的密钥存放位置
  • validity 表示密钥的有效时间,单位为天

二:Spring Boot项目配置

  1. 将证书文件certificate.p12放到resources目录下
  2. 在application.properties配置https
server.ssl.key-store=classpath:certificate.p12
server.ssl.key-alias=tomcathttps
server.ssl.key-store-password=123456
  • key-store表示密钥文件名。
  • key-alias表示密钥别名。
  • key-store-password就是在cmd命令执行过程中输入的密码。
  1. 测试代码
@RestController
public class TestController {

    @RequestMapping(value = "/test", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public String test() {
        return "hello https";
    }
}
  1. 分别使用http和https协议访问

使用http协议访问 http://localhost:8080/test 会报Bad Request This combination of host and port requires TLS
在这里插入图片描述
使用https协议访问 https://localhost:8080/test 因证书是自己生成的,浏览器认为是不安全的,所以不能直接访问,需要点击 “高级” -> “继续前往” 才可以继续访问

在这里插入图片描述
在这里插入图片描述

三:HTTP重定向到HTTPS

同时支持HTTP和HTTPS:HTTP重定向到HTTPS

访问http://localhost:8081/test 会直接重定向到https://localhost:8080/test

@Configuration
public class TomcatConfiguration {

    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(){
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        factory.addAdditionalTomcatConnectors(createTomcatConnector());
        return factory;
    }
    private Connector createTomcatConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8081);
        connector.setSecure(false);
        connector.setRedirectPort(8080);
        return connector;
    }
}
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/vbirdbest/article/details/100541052
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢