本文介绍给 SpringBoot 项目配置 SSL 证书。
HTTPS 实际上就是 HTTP + SSL,使我们的网站更加安全,地址栏上会有一把小锁。
点击小锁,看详情
这种证书是免费的,有效期为1年,过期后需要重新申请。
一、SSL申请方式
可以通过阿里云或者腾讯云申请免费版DVSSL证书 。
这里以腾讯云为例,访问 https://console.cloud.tencent.com/ssl
点击 申请免费证书
输入域名和邮箱即可,下一步
然后进行DNS验证即可
然后等待审核,平时比较快的时候十几分钟就能审核完成。
然后在刚才那个页面下载证书
下载完成后,解压,可以看到不同Web服务器版本的证书和私钥
二、SpringBoot 项目配置证书
我们需要一个正常的 SpringBoot 项目,这里以本站为例。
1、拷贝 Tomcat 里 liuyanzhao.com.jks 文件到 resourses 下面
2、在 application.yml 里添加配置
server:
port: 443
ssl:
key-store: classpath:liuyanzhao.com.jks
key-store-password: 088XXXXXXX
key-store-type: JKS
key-store 的值是上面那个 jks 文件的路径
key-store-password 的值是 keystorePass.txt 里的内容
3、启动类添加两段代码,用来设置内置 tomcat 的端口号和 https 配置
完整代码如下
package com.liuyanzhao.sens;
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.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
/**
* @author 言曌
*/
@SpringBootApplication
public class SensApplication {
public static void main(String[] args) {
SpringApplication.run(SensApplication.class, args);
}
/**
* http重定向到https
*
* @return
*/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(80);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
}
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏