Spring Boot配置SSL证书(开启https)

简介: Spring Boot配置SSL证书(开启https)

https会使我们的网站更加安全,起码看起来似乎好一些。这里分享Spring Boot配置https的步骤。

1,去阿里云或者腾讯云等等申请SSL证书

个人用户申请免费证书即可。阿里云免费证书申请方法

然后在我们的控制台-SSL证书里面可以添加免费证书:

网络异常,图片无法展示
|

然后点证书申请:

网络异常,图片无法展示
|

根据其中指示填写完信息后,会让你给域名添加相应TXT记录,添加后即可申请。大约1-15分钟后证书申请完毕。

然后在列表中点击下载按钮:

网络异常,图片无法展示
|

下载jks格式:

网络异常,图片无法展示
|

然后会得到个压缩包,里面有jks证书密码

2,Spring Boot配置证书

在Spring Boot配置文件application.properties中添加以下的配置:

# SSL证书设置
server.ssl.key-store=证书jks文件所在位置
server.ssl.key-store-password=证书密码
server.ssl.keyStoreType=JKS

根据自己的配置修改。

建议一般证书文件放在项目文件夹\src\main\resources下。例如我的证书文件是ssl.jks放在项目文件夹\src\main\resources中,密码是123456,那么我的配置如下:

# SSL证书设置
server.ssl.key-store=classpath:ssl.jks
server.ssl.key-store-password=123456
server.ssl.keyStoreType=JKS

路径需要说明的是,一般classpath:开头的表示jar包内路径,而在Spring Boot项目中项目文件夹\src\main\resources文件夹即可对应为classpath的根目录。

当然也可以放在jar包外其余位置,例如放在项目文件夹中的ssl文件夹中,那么路径就以file:开头配置:

server.ssl.key-store=file:ssl/ssl.jks

这样就要最后保证生成的jar要和上述ssl文件夹放在同一目录,并保证运行目录就是jar所在目录。

这样在开启项目,就是https了!

3,配置http自动跳转https

在启动类中加入如下代码:

/*** http自动跳转https*/@BeanpublicServletWebServerFactoryservletContainer() {
TomcatServletWebServerFactorytomcat=newTomcatServletWebServerFactory() {
@OverrideprotectedvoidpostProcessContext(Contextcontext) {
SecurityConstraintsecurityConstraint=newSecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollectioncollection=newSecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
      }
   };
tomcat.addAdditionalTomcatConnectors(redirectConnector());
returntomcat;
}
privateConnectorredirectConnector() {
Connectorconnector=newConnector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8801); // 原http端口connector.setSecure(false);
connector.setRedirectPort(8443); // 跳转的https端口,也就是我们配置文件中配置的项目端口returnconnector;
}

注意这个Context类是org.apache.catalina包下的,Connector类是org.apache.catalina.connector包下的。

根据自己的需要修改上述第二个方法中http端口和https端口。

实际情况下,为了更方便地开启/关闭https,我们可以使用控制配置文件值实现动态注入Bean,以控制打开或者关闭https的功能。

上述代码,servletContainer方法返回值会被注册为Bean,只有这个方法返回值注册为Bean了,才会开启https。因此我们使用@ConditionalOnProperty实现配置文件控制并动态注入。

我们自定义一个配置名,这里就叫做swsk33.server.enablehttps,只有配置文件存在这一项配置且其值为true时,才会注入这个Bean,才会开启https,否则默认使用http。代码如下:

@Bean@ConditionalOnProperty(name= {"swsk33.server.enablehttps"}, havingValue="true")
publicServletWebServerFactoryservletContainer() {
TomcatServletWebServerFactorytomcat=newTomcatServletWebServerFactory() {
@OverrideprotectedvoidpostProcessContext(Contextcontext) {
SecurityConstraintsecurityConstraint=newSecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollectioncollection=newSecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
      }
   };
tomcat.addAdditionalTomcatConnectors(redirectConnector());
returntomcat;
}

重点是上面加了@ConditionalOnProperty注解,这个注解可以根据配置文件值,实现条件注入。其中name表示配置名,是个数组,havingValue表示指定配置必须要有这个值。也就是说必须当这个/多个指定配置名存在且为这个值时,才会注入这个Bean。

最后在配置文件application.properties加入我们指定的配置:

swsk33.server.enablehttps=true

这样就开启了https,填false关闭https。

注意关闭https的话还需要把上面讲到的以下关于证书配置项也给去掉:

server.ssl.key-store
server.ssl.key-store-password
server.ssl.keyStoreType


相关文章
|
11月前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
1910 1
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
1159 87
|
10月前
|
网络安全 开发工具 git
在GitLab CI中同步HTTPS仓库地址的yaml配置
最后,提交并推送 `.gitlab-ci.yml`文件到您的GitLab仓库。GitLab CI/CD将自动识别这个文件,并在每次推送到 `master`分支时执行定义的同步任务。
503 16
|
安全 网络协议 网络安全
怎么给ip地址配置https访问
为了配置公网IP地址的HTTPS访问,首先需明确需求并选择受信任的证书颁发机构(如JoySSL)。接着,在JoySSL官网注册并登录,填写特定注册码230922以获取免费IP证书的测试权限。提交证书申请时,填写IP地址及相关验证信息,并完成IP地址验证。验证通过后,下载证书文件。最后,使用浏览器访问IP地址,检查安全连接标志,确保无证书错误。通过以上步骤,可成功配置IP地址的HTTPS访问,提升数据传输安全性和可信度。
|
安全 数据建模 应用服务中间件
阿里云SSL证书价格、证书类型及免费版证书申请和证书部署教程参考
阿里云SSL证书有收费版也有免费版,收费版DV域名级SSL类型405元起,免费版证书为DV域名级SSL类型,每个实名个人和企业主体在一个自然年内可以一次性领取20张免费证书。本文为大家详细介绍阿里云SSL证书价格情况,包括不同域名类型、证书类型、证书等级和证书品牌的相关收费标准,以及免费版证书的申请和部署教程参考。
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
10月前
|
网络协议 应用服务中间件 网络安全
阿里云SSL证书申请具体操作流程,以申请免费SSL证书为例
阿里云免费SSL证书由Digicert提供,单域名可申请20张,有效期3个月。通过数字证书管理控制台,完成购买、域名验证(DNS或文件)、提交审核后下载,支持Nginx、Apache等多服务器格式。
2613 0
|
算法 应用服务中间件 网络安全
阿里云WoSign“国密RSA双SSL证书”应用实践
阿里云WoSign品牌SSL证书是阿里云平台热销的国产品牌证书之一,支持签发国密合规的SM2算法SSL证书以及全球信任的RSA算法SSL证书,能够满足平台用户不同的SSL证书应用需求,同时为用户提供国密模块支持,实现“国密/RSA双证书部署”。
1889 6
阿里云WoSign“国密RSA双SSL证书”应用实践
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费版本,涵盖DV、OV、EV多种类型。收费证书品牌包括DigiCert、GlobalSign等,价格从238元/年起。免费SSL证书由Digicert提供,单域名有效3个月,每个实名主体每年可领取20个。具体价格和详情见阿里云SSL官方页面。
|
算法 安全 应用服务中间件
2025阿里云智惠采购季,WoSign SSL国产证书折上折满减优惠
**2025阿里云“智慧采购季,就上阿里云”活动火热进行中!** 3月1日至31日,阿里云WoSign品牌SSL证书新老用户同享折上折满减优惠。DV SSL证书低至220元/年起,轻松实现HTTPS加密,保障数据传输安全。领取“智惠采购季上云礼包”,先领券再下单,享受满减优惠。WoSign品牌SSL证书国密RSA双算法支持,确保广泛兼容与可靠部署。
1084 2
2025阿里云智惠采购季,WoSign SSL国产证书折上折满减优惠

热门文章

最新文章