微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于mkcert工具实现Spring Boot 项目服务通过Https方式访问

mkcert(Windows环境)

1.下载地址:https://github.com/FiloSottile/mkcert/releases

2.选择版本

3.以管理员身份运行`命令提示

1) cd C:/ #进入工具存放的目录下
2) mkcert-v1.4.4-windows-amd64.exe -install #命令进行安装
3) mkcert-v1.4.3-windows-amd64.exe #查询是否安装成功
4) mkcert-v1.4.3-windows-amd64.exe -pkcs12 [本地ip] #为本地ip创建p12证书,生成的证书在当前目录

Spring Boot项目配置证书

1.将p12证书存放在项目resources目录下

2.在pom.xml文件增加配置

<resource>
    <directory>src/main/webapp</directory>
    <targetPath>meta-inf/resources</targetPath>
    <includes>
        <include>**/*.*</include> <!--将resources下所有目录文件都打包target文件夹中 -->
    </includes>
    <filtering>true</filtering>
</resource>

3.配置application.yml

server:
  port: 9002
  ssl:
    key-store: classpath:172.20.10.4.p12
    key-password: changeit # mkcert工具生成认密码
    key-store-password: changeit # mkcert工具生成认密码
    key-store-type: PKCS12

4.在启动类中增加如下代码

@Bean
public ServletWebServerFactory servletContainer() {

    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {

        @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);
        }
    };
    tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
    return tomcat;
}

/**
     * 让我们的应用支持HTTP是个好想法,但是需要重定向到HTTPS,
     * 但是不能同时在application.yml中同时配置两个connector,
     * 所以要以编程的方式配置HTTP connector,然后重定向到HTTPS connector
     * @return Connector
     */
private Connector initiateHttpConnector() {
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setPort(80); // http端口
    connector.setSecure(false);
    connector.setRedirectPort(9002); // application.yml中配置的https端口
    return connector;
}

配置至此结束

启动项目访问地址为:https://ip:port/

或者使用: http://ip:80自动跳转上条地址

*带上小锁是不是很有安全感呢~~~~*

感谢阅读!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐