Springboot工程配置https访问

背景

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

证书生成

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

  • 生成自签名证书
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访问你的服务!

<think>好的,用户想了解如何启动Spring Boot工程,需要提供启动方法的教程。首先,我得回顾一下Spring Boot的基本概念和流程。记得Spring Boot简化了配置,使用起步依赖和自动配置,让项目启动变得容易。 用户的问题是关于启动方法的,可能需要从环境搭建开始,包括JDK、Maven或Gradle的安装,然后是创建项目的方式。常用的有Spring Initializr,或者用IDE比如IntelliJ或Eclipse来生成项目结构。需要详细说明步骤,确保用户能一步步跟着操作。 接下来,项目结构也很重要,要指出主应用类的位置和注解@SpringBootApplication的作用。然后是如何编写一个简单的控制器,使用@RestController和@RequestMapping注解,这样用户可以看到处理HTTP请求的例子。 启动方式部分,要提到几种方法:通过IDE运行主类,使用Maven命令(mvn spring-boot:run),或者打包成JAR后用java -jar运行。这些步骤需要清晰列出,确保用户能选择适合自己的方式。 另外,用户提供的引用中有提到内置Web服务器,比如spring-boot-starter-web默认使用Tomcat,所以需要强调添加这个依赖的重要性,以及如何通过配置修改端口等设置。 可能用户是初学者,所以语言要尽量简洁,避免使用太多专业术语,但又要涵盖必要的细节。比如,需要说明application.properties文件的作用,如何修改端口,以及自动配置的好处。 最后,生成相关问题时要考虑用户可能进一步想知道的内容,比如配置、日志、热部署等,确保问题有针对性,帮助用户深入学习和解决问题。</think>### Spring Boot 工程启动方法教程 #### 一、环境准备 1. **JDK安装** 确保已安装JDK 1.8或更高版本,通过命令`java -version`验证版本。 2. **构建工具选择** - Maven:需安装并配置环境变量,验证命令`mvn -v` - Gradle:可选,需安装并配置环境变量[^3] 3. **IDE推荐** 使用IntelliJ IDEA或Eclipse(需安装Spring Tools插件)[^2] #### 二、项目创建 1. **通过Spring Initializr生成项目** 访问 [https://start.spring.io](https://start.spring.io) ,按需选择配置: - Project:Maven/Gradle - Language:Java - Spring Boot:选择最新稳定版本 - Dependencies:添加`Spring Web`(必选)[^3] 2. **IDE直接创建(以IntelliJ为例)** - 新建项目 → Spring Initializr - 勾选`Web → Spring Web`依赖 - 完成创建后自动生成项目结构 #### 三、项目结构说明 ```text src/ ├── main/ │ ├── java/ │ │ └── com.example.demo/ │ │ └── DemoApplication.java # 主启动类 │ └── resources/ │ ├── static/ # 静态资源 │ ├── templates/ # 模板文件 │ └── application.properties # 配置文件 ``` #### 四、编写启动类 主类需包含`@SpringBootApplication`注解: ```java @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 此注解组合了`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`[^2] #### 五、添加控制器(可选) 创建HTTP接口测试启动结果: ```java @RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "Spring Boot启动成功!"; } } ``` #### 六、启动方式 1. **IDE直接运行** 右键点击主类 → `Run DemoApplication` 2. **Maven命令启动** ```bash mvn spring-boot:run ``` 3. **打包后运行** ```bash mvn clean package java -jar target/demo-0.0.1-SNAPSHOT.jar ``` #### 七、验证启动 访问 `http://localhost:8080/hello` 应返回"Spring Boot启动成功!" 默认端口可在`application.properties`中修改: ```properties server.port=8081 ``` #### 八、关键特性说明 1. **内置Web服务器** 通过`spring-boot-starter-web`自动集成Tomcat服务器[^4] 2. **自动配置** 根据依赖自动配置Bean,例如添加`spring-boot-starter-data-jpa`会自动配置数据源[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值