springboot使用https
2021-10-22 本文已影响0人
SeekLife0
1、获得https的证书。
途径:
1、自己使用openssl生成自签证书。
2、到freessl网站可以免费申请90天到期证书。
https://freessl.org/#
步骤:
填入自己的域名
选择日期
图片.png
自动生成CSR
图片.png
选择免费
图片.png
使用DNS验证
图片.png
域名没问题DNS验证会给你一个,域名以及key,key-value。
来到云服务器控制台选择域名选项,如阿里云
首先来到域名解析
图片.png
添加记录
图片.png
修改记录选CNAME
主机记录填入key
解析线路选择境外
记录值key-value
图片.png
然后点击verify domain,完成验证,因为是外网验证的时候翻一下,否则会验证失败。
图片.png
点击下载证书
图片.png
解压后得到
图片.png
3、到对应云服务中进行ssl证书申请。
2、不同服务器需要不同类型的证书文件。使用keyManager来生成
https://www.keymanager.org/
因为springboot使用嵌入式的tomcat我们需要获得tomcat对应证书文件。我们下载好keymanager。
导入获取的证书文件,全选所有进行导入。
点击导出得到jks后缀的文件,私钥加密密码随便输入一个。
图片.png
最后得到jks文件
图片.png
3、对springboot进行相关配置
把jks文件放入resource文件夹下
对application.yml进行配置
server:
port: 9100
ssl:
enabled: true
key-store: classpath:***.jks
key-store-type: JKS
key-store-password: ***
在springboot启动类中配置自动从http跳转https
@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(8080);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号,也就是项目配置的port
connector.setRedirectPort(9100);
return connector;
}