查看原文
其他

SpringBoot 配置 HTTPS 安全证书的两种方案

关注Java就该这么学带你全面认识Java
Java就该这么学后台回复 1024 有特别礼包

责编:Java就该这么学 | 来源:https://blog.csdn.net/lhc_makefunny

上一篇精彩:Api 接口优化的几个技巧
大家好,我是Java就该这么学。

文章目录

  • 使用JDK自带的工具生成证书
  • 使用FreeSSL提供的证书

使用JDK自带的工具生成证书

1.确保安装了JDK并正确配置了环境变量;

2.进入你的JAVA_HOME目录中的bin目录;

3.在这个目录下执行

//  keytool -genkey -alias (别名) -dname "CN=(姓名),OU=(组织单位名称),O=(组织名称),L=(城市名称),ST=(省),C=(国家)" -storetype (密钥仓库类型) -keyalg (生证书的算法名称) -keysize (密钥长度,证书大小) -keystore (指定生成证书的位置和证书名称) -validity (证书有效期,天单位)
 keytool -genkey -alias uublog -dname "CN=Lhc,OU=SCYD,O=SCYD,L=CD,ST=SiChuan,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365

4.获取名为keystore.p12的证书,将其放入resources目录中,并在application.propertiesapplication.yml中配置

#https端口号.  
server.port: 443  
#证书的路径.  
server.ssl.key-store: classpath:keystore.p12  
#证书密码,请修改为您自己证书的密码.  
server.ssl.key-store-password: 123456  
#秘钥库类型  
server.ssl.keyStoreType: PKCS12   
#证书别名  
#server.ssl.keyAlias: uublog  

若指定的端口非443,则在访问的时添加具体的端口号

5.将http重定向到https

package com.lhc.uublog.utils;  
  
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.web.embedded.tomcat.TomcatServletWebServerFactory;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
  
/**  
 * @ProjectName: uublog  
 * @Package: com.lhc.uublog.utils  
 * @ClassName: SSLUtils  
 * @Author: lhc  
 * @Description: Http重定向到Https  
 */  
@Configuration  
public class SSLUtils {  
  
    @Bean  
    public Connector connector() {  
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");  
        connector.setScheme("http");  
        connector.setSecure(false);  
        connector.setPort(80);  
        connector.setRedirectPort(443);  
        return connector;  
    }  
  
    @Bean  
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {  
        TomcatServletWebServerFactory webServerFactory = new TomcatServletWebServerFactory() {  
            @Override  
            protected void postProcessContext(Context context) {  
                SecurityConstraint securityConstraint = new SecurityConstraint();  
                securityConstraint.setUserConstraint("CONFIDENTIAL");  
                SecurityCollection securityCollection = new SecurityCollection();  
                securityCollection.addPattern("/*");  
                securityConstraint.addCollection(securityCollection);  
                context.addConstraint(securityConstraint);  
            }  
        };  
        webServerFactory.addAdditionalTomcatConnectors(connector);  
        return webServerFactory;  
    }  
}  

6.部署

若部署环境为windows,直接启动即可;若部署环境是Linux,先开通443端口,在进行部署

# 判断443端口是否已经开放  
firewall-cmd --query-port=443/tcp  
# 若未开放,则配置开启,并重新加载配置  
firewall-cmd --add-port=443/tcp --permanent  
firewall-cmd --reload   

7.以JDK生成证书的方式足够简单,但在Chrome和Edge浏览器上依旧显示不安全,因此下面就使用FreeSSL提供的免费证书



使用FreeSSL提供的证书

FreeSSL.cn 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。

牛逼啊!接私活必备的 N 个开源项目!赶快收藏

1.首先你得有一个域名,推荐国外的GoDaddy,价格合适且不需要备案就可以进行解析;



2.FreeSSL网站上有对不同品牌的介绍了和证书生成方式的介绍,请参阅网站;

3.一顿操作之后,相信你已经下载证书到本地了,将证书放入resources目录中,并在配置文件中添加配置

#https端口号.  
server.port: 443  
#证书的路径.  
server.ssl.key-store: classpath:***.jks  
#证书密码,请修改为您自己证书的密码.  
server.ssl.key-store-password: ***  
#秘钥库类型  
server.ssl.keyStoreType: JKS  

4.将http重定向到https,代码同上

5.打包并部署

通过查看日志,http请求成功重定向到到了https,在Chrome浏览器中也标示为安全网站

Spring Boot版本为2.0.4.RELEASE

欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

在 GitHub猿 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!


公众号后台回复 Java 或者 面试 有惊喜礼包!Java就该这么学交流群

 「Java就该这么学」建立了读者Java交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。

扫描添加好友邀你进Java群,加我时注明姓名+公司+职位】


版权申明:内容来源网络,版权归原作者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

往日文章:

想了解Java后端学习路线?看完这篇就够了!
2天3夜开发了一个商城系统,用它挣了10.7万!
别再用 BeanUtils 了,这款 PO VO DTO 转换神器不香么?
使用Spring AOP实现异步文件上传
CTO 说了:谁再用 Redis 过期监听实现定时任务,立马滚蛋!
SpringBoot蓝天幼儿园管理系统
淦,为什么 "𠮷𠮷𠮷" .length !== 3 ??
一个网站部署的完整流程(包教包会)
别再写 main 方法测试了,太 Low!这才是专业 Java 测试方法!
Spring中毒太深,离开Spring我连最基本的CRUD都不会写了...
用 Java 写了一个类QQ界面聊天小项目,可在线聊天!
RedisJson 横空出世,比 ES 快7 倍,惊爆了!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存