前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot两种方式配置 HTTPS 安全证书

SpringBoot两种方式配置 HTTPS 安全证书

作者头像
高大北
发布2022-06-14 20:06:19
1.2K0
发布2022-06-14 20:06:19
举报
文章被收录于专栏:java架构计划训练营
方式一
使用JDK自带的工具生成证书

1:确保安装了JDK并正确配置了环境变量; 2:进入你的JAVA_HOME目录中的bin目录; 3:在这个目录下执行

代码语言:javascript
复制
//  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" 

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

代码语言:javascript
复制
#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,则在访问的时添加具体的端口号 将http重定向到https

代码语言:javascript
复制
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;

/**
 * @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;
    }
}

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

代码语言:javascript
复制
# 判断443端口是否已经开放
firewall-cmd --query-port=443/tcp
# 若未开放,则配置开启,并重新加载配置
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload 
方式二
用FreeSSL提供的免费证书

FreeSSL.cn 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。 1.首先你得有一个域名,推荐国外的GoDaddy,价格合适且不需要备案就可以进行解析; 2.FreeSSL网站上有对不同品牌的介绍了和证书生成方式的介绍,请参阅网站; 3.一顿操作之后,相信你已经下载证书到本地了,将证书放入resources目录中,并在配置文件中添加配置

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

4.将http重定向到https,代码同上 5.打包并部署

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方式一
    • 使用JDK自带的工具生成证书
    • 方式二
      • 用FreeSSL提供的免费证书
      相关产品与服务
      SSL 证书
      腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档