Springboot工程配置https访问

程序员阿斌 2024-09-17 17:07:03 阅读 74

背景

因为前端工程使用nginx配置了https访问,在https直接请求我们Springboot后端的http接口会报错。那么我们就需要配置使得我们后端的springboot服务支持https访问。

证书生成

在配置springboot工程https之前,我们需要生成自签名证书以及Spring Boot通常使用的PKCS#12格式的密钥库。

生成自签名证书

<code>openssl req -x509 -newkey rsa:4096 -keyout keystore.key -out keystore.crt -days 365

其中-days 365:证书有效期为365天。

执行此命令后,系统将提示你输入一些证书信息,如国家、州/省、城市、组织等。这些信息将被嵌入到证书中。

创建PKCS#12文件

openssl pkcs12 -export -in keystore.crt -inkey keystore.key -out keystore.p12 -name myalias -CAfile keystore.crt -caname root -chain

这条命令将执行以下操作:

-export:导出PKCS#12文件。

-in:指定证书文件的路径。

-inkey:指定私钥文件的路径。

-out:指定PKCS#12文件的输出路径(这里是keystore.p12)。

-name:指定密钥库中的别名(这里是myalias)。

-CAfile:指定证书文件(这里是keystore.crt)。

-caname:指定CA的名称(这里是root)。

-chain:包含整个证书链。

系统将提示你输入密码以保护PKCS#12文件,我们同样设置为myalias。现在,我们已经生成了一个自签名证书和一个keystore.p12文件的密钥库。

工程配置

得到keystore.p12密钥库文件之后,我们只需要完成以下两步就可以完成springboot工程的https访问。

添加ssl配置类

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;

import org.springframework.boot.web.server.Ssl;

import org.springframework.boot.web.server.WebServerFactoryCustomizer;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class SslConfig {

@Bean

public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainer() {

return factory -> {

Ssl ssl = new Ssl();

// 配置SSL属性

ssl.setKeyStore("classpath:keystore.p12");

// 上面配置密钥库的密码

ssl.setKeyStorePassword("myalias");

ssl.setKeyStoreType("PKCS12");

// 密钥库的别名

ssl.setKeyAlias("myalias");

factory.setSsl(ssl);

};

}

}

注意上面配置类的配置改成自己的。

导入密钥库文件

把上面生成的keystore.p12密钥库文件放到springboot工程的resources文件夹下。

到现在就完成了springboot服务的https改造。如果你之前的服务端口是8080,那么现在你可以使用https://127.0.0.1:8080访问你的服务!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。