一.生成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;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class RuoYiApplication
{
public static void main(String[] args)
{
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
|