SpringBoot2.x配置HTTPS访问

一.生成SSL证书;

二.生成客户端证书;

三.配置HTTPS访问。

一.生成SSL证书
本文将以通过JDK提供的工具来生成证书,并配置到Spring Boot项目中。
在JDK中提供了keytool的一个证书管理工具。位于%JAVA_HOME%\bin目录下,通过该工具可生成一个免费的证书。
1.新建证书目录,E:\jar_start\sslca,打开cmd命令窗口,切换到E:\jar_start\sslca,输入以下命令:

keytool -genkey -alias springboot-https -keyalg RSA -keysize 2048  -keystore ./https.p12 -validity 365

或者:

keytool -genkey -alias tomcat -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -keystore ./tomcat.keystore -storepass 12345678

上述命令对应参数作用如下:

参数 说明
genkey 指定为创密钥操作。
alias 指定keystore的别名。
keyalg 指定加密算法,这里采用RSA。
keysize 指定密钥长度。
keystore 指定生成文件位置。
validity 指定密钥有效期,单位为天。

过程如下:可以任意填写

E:\jar_start\sslca>keytool -genkey -alias tomcat -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -keystore ./tomcat.keystore -storepass 12345678
您的名字与姓氏是什么?
  [Unknown]:  liu
您的组织单位名称是什么?
  [Unknown]:  chao
您的组织名称是什么?
  [Unknown]:  chao
您所在的城市或区域名称是什么?
  [Unknown]:  chao
您所在的省//自治区名称是什么?
  [Unknown]:  chao
该单位的双字母国家/地区代码是什么?
  [Unknown]:  chao
CN=liu, OU=chao, O=chao, L=chao, ST=chao, C=chao是否正确?
  []:  y


Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore ./tomcat.keystore -destkeystore ./tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12

文件夹下生成:tomcat.keystore文件
在这里插入图片描述
二.生成客户端证书
命令:

keytool -genkey -alias client -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -storetype PKCS12 -keystore ./client.p12 -storepass 12345678

过程如下:可以任意填写

E:\jar_start\sslca>keytool -genkey -alias client -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -storetype PKCS12 -keystore ./client.p12 -storepass 12345678
您的名字与姓氏是什么?
  [Unknown]:  chao
您的组织单位名称是什么?
  [Unknown]:  chao
您的组织名称是什么?
  [Unknown]:  chao
您所在的城市或区域名称是什么?
  [Unknown]:  chao
您所在的省//自治区名称是什么?
  [Unknown]:  chao
该单位的双字母国家/地区代码是什么?
  [Unknown]:  chao
CN=chao, OU=chao, O=chao, L=chao, ST=chao, C=chao是否正确?
  []:  y

生成文件:client.p12
在这里插入图片描述

三.配置HTTPS访问。
1.打开已有的SpringBoot工程

2.将证书文件:client.p12复制到resources目录下

在这里插入图片描述
3.修改application.yml
key-store:值的路径要注意按实际修改

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

4.修改启动类

添加两个方法,完整代码如下:

package com.ruoyi;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;

/**
 * 启动程序
 * 
 * @author ruoyi
 */
@SpringBootApplication(exclude = {
    
     DataSourceAutoConfiguration.class })
public class RuoYiApplication
{
    
    
    public static void main(String[] args)
    {
    
    
        // System.setProperty("spring.devtools.restart.enabled", "false");
        SpringApplication.run(RuoYiApplication.class, args);
    }
    @Bean
    public Connector connector(){
    
    
        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(443);
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector){
    
    
        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(connector);
        return tomcat;
    }
}

5.启动Springboot项目

6.浏览器访问 http://127.0.0.1:8080/system/wechat/getCodes
或者直接访问:https://127.0.0.1/system/wechat/getCodes
在这里插入图片描述

Guess you like

Origin blog.csdn.net/firstlt0217/article/details/121815318