实现内网https 内网部署https SpringBoot

最近项目中要在内网中部署https网址,之前对https完全不了解,一脸懵逼,好在在一顿疯狂必应之后,成功完成了部署。

首先需要明确的是,由于是在内网部署,所以完全不需要搞得那么复杂(宝塔啊,申请域名啊什么的)。

零、

前置条件:在本地安装好jdk和OpenSSL,并配置好两者的环境变量

一、

安装OpenSSL并配置环境的参考网址:

仅需要看第二部分“Openssl环境安装(文末有安装包)”即可。

在最后验证是否成功安装并配置环境成功时,其实只需要在cmd中输入OpenSSL,出现以下内容即代表安装并配置成功。

二、

参考网址: 内网Https 自签Https证书 配合Tomcat 实现内网Https详细图文 : 只需要根据上面网址的步骤,一步步跟着做到“客户端安装证书”

三、

在SpringBoot中部署https

我所做的项目只需要跟着做完“二.生成ssl证书”。

四、

因为本项目要求多数为http地址,仅少数地址需要为https,所有特地声明了两个端口号,一个用作http,一个用作https。

配置文件内容如下:

server:
  port: 8443 #注意,这里是https访问的的端口号
  http:
    port: 8080
  ssl:
    key-store: classpath:keystore.p12
    key-store-password: 123456
    key-alias: tomcat
    key-store-type: PKCS12

为了使http生效,需要在项目中加入以下配置类

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfig {

    @Value("${server.http.port}")
    private int httpPort;

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
        return tomcat;
    }

    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }
}
经验分享 程序员 微信小程序 职场和发展