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

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

零、

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

一、

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

windows10安装openssl环境并命令行调用openssl(不需要编译openssl源代码,快速安装)_MonkeyKing-Sun的博客-CSDN博客_openssl环境1.安装Perl(非必须)下载地址:https://www.activestate.com/activeperl/downloads因为网上的教程大多是安装Perl的,所以就安装了,想用这种方式的参考这个吧https://blog.csdn.net/jbwd1/article/details/77430549,我就不啰嗦了。我在安装完ActivePerl-5.24.3.2404-M...https://blog.csdn.net/sunhuansheng/article/details/82218678仅需要看第二部分“Openssl环境安装(文末有安装包)”即可。

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

二、

参考网址: 内网Https 自签Https证书 配合Tomcat 实现内网Https详细图文 : 内网Https 自签Https证书 配合Tomcat 实现内网Https详细图文 - 程序猿小码 - 博客园内网项目启用Https配置手册 软件需求: 制作前的需求: 开始制作CA根证书 在任意盘符(我这里选择G盘)下新建一个文件夹 这里我建立一个ca的文件夹用来存储生成的CA证书 创建私钥 生成私钥命令:https://www.cnblogs.com/ChromeT/p/11122480.html只需要根据上面网址的步骤,一步步跟着做到“客户端安装证书”

三、

在SpringBoot中部署https

spring boot支持https请求 - 简书https://www.jianshu.com/p/71cd01fa8438

我所做的项目只需要跟着做完“二.生成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;
    }
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐