2021 申请SSL证书、Nginx和SpringBoot配置阿里云SSL证书解决HTTP HTTPS及不生效、打包报错详细教程

本文详细指导如何在2021年通过阿里云免费申请SSL证书,并将其配置到Nginx和SpringBoot应用中,解决从SSL证书获取、Nginx配置到SpringBoot SSL部署的常见问题,包括端口开放、YML配置、pom.xml调整等关键步骤。
摘要由CSDN通过智能技术生成

目录

1. 获取SSL证书文件

这里使用阿里云申请免费SSL证书为例。

1.1 购买SSL证书

首先进入 申请链接.
0元购买后,进入 SSL证书管理控制台.
在这里插入图片描述
在这里插入图片描述

1.2创建证书

如下图步骤 1到4,创建证书,填写申请个人内容,其他默认即可,注意网址部分需要区分,例如www.baidu.com 、 baidu.com、cdn.baidu.com可以分别申请证书。
免费SSL可以签发20个证书,对应不同的域名,有效期一年。
填写申请后,需要审核几分钟,回到SSL证书管理控制台. 可以看到已经申请成功的证书列表。

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

2. Nginx配置SSL

2.1 开始Nginx配置

如果使用的是阿里云ESC,系统会自动配置域名规则。证书下载选择Nginx。
在这里插入图片描述
下载文件解压后有两个文件,分别是xxx.key和xxx.pem文件。
找到nginx的默认目录/url/local/nginx,找不到可以执行以下命令尝试查找

find / -name nginx   

👆 查找nginx目录命令

ps  -ef | grep nginx

👆 查看nginx端口命令,可以看到nginx目录

如果没有可以选择其他目录,最好是和nginx.conf文件同路径下。

find / -name nginx.conf  

👆 查找nginx配置文件命令(如果找不到nginx配置文件,那后续无法操作,请重新安装、配置。)

2.2 Nginx.conf配置

创建cert文件夹,将上述两个SSL证书文件放入此目录内。更改nginx.conf配置文件内容,添加server。

server {
        listen  443 ssl;
        #  配置HTTPS的默认访问端口为443。
    	#  如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    	#  如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
        server_name  www.baidu.com;
        #   www.baidu.com更换为你配置的域名
        root /xxx;
        #  需要将 /xxx更换为你的web目录
        index index.html index.htm;
        ssl_certificate /home/cert/xxx.pem;  
        #  需要将 /home/cert/xxx.pem替换成已上传的证书文件的名称。
    	ssl_certificate_key /home/cert/xxx.key; 
    	#  需要将 /home/cert/xxx.key替换成已上传的证书密钥文件的名称和所在目录。
    	ssl_session_cache    shared:SSL:1m; 
  		ssl_session_timeout 5m;
    	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    	#  表示使用的加密套件的类型。
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
    	ssl_prefer_server_ciphers on;
    	#  ↓开启GZIP ,可以不开启。
    	gzip on;
        gzip_buffers 32 4K;
        gzip_comp_level 6;
        gzip_min_length 100;
        gzip_types application/javascript text/css text/xml;
        gzip_disable "MSIE [1-6]\.";
        gzip_vary on;	
        #  ↑开启GZIP ,可以不开启。
        location / {
            root   /xxx;
            #  需要将 /xxx更换为你的web目录
            index  index.html index.htm;
            #  ↓ 解决刷新页面变成404问题的代码,个性化404界面,可以不设置
            try_files $uri $uri/ /index.html;  
        }
        #  ↓可以不设置
         location /api/ {
             proxy_pass https://127.0.0.1:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /xxx;
        }
          #  ↑可以不设置
    }

更改配置完成后,执行如下命令,重启nginx

nginx -s reload

如果有报错,请检查nginx.conf。

2.3 添加ECS安全组

然后打开 阿里云ECS控制台.,进入你的实例,配置安全组,开放443端口访问。
在这里插入图片描述
至此Nginx配置SSL证书结束,访问你的http://你的域名,查看上方是否出现锁的标志。如果出现“不安全”,需要配查是否使用CDN服务器、代码中是否访问了旧的http连接。
在这里插入图片描述

3. 开始配置SpringBoot SSL证书

3.1 下载证书

在这里插入图片描述

3.2 配置YML文件

解压xxx.pfx、password.txt文件到 项目\src\main\resources 目录内,复制密码文件中的字符串,然后修改配置yml文件。其他配置格式自行查找。

server:
  port: 443
  ssl:
    key-store: classpath:xxx.pfx
    key-store-password: 密码
    keyStoreType: PKCS12

这里需要注意:port 和 ssl同级,其他教程port是ssl的父级,我这边编译出错,排查后改为同级编译成功。

3.3 更改pom.xml

<build>
        <plugins>
        	<!--添加-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
</build>

3.4 更改入口文件

   	import org.springframework.beans.factory.annotation.Value;
    @Value("${server.port}")  //这里使用你的yml配置
    private Integer httpPort;

    public static void main(String[] args) {
        SpringApplication.run(xxx.class, args);
    }
    //添加
    @Bean
    public Connector connector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        // 对http请求添加安全性约束,将其转换为https请求
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(connector());
        return tomcat;
    }

3.5 重新maven install

4. 问题

主要介绍SpringBoot配置SSL遇到的问题,其他文章会介绍

[1]: SpringBoot错误:Unable to start ServletWebServerApplicationContext due to multiple ServletWebServerFactory beans : webServerFactory,servletContainer.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值