springboot项目同时支持http和https访问

这篇具有很好参考价值的文章主要介绍了springboot项目同时支持http和https访问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、通过JDK中keytool工具生成证书

前提是电脑安装了JDK并配置了环境变量,打开CMD,并输入

keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore

密码和证书内容根据自己情况可以自定义(我设置的密码是:dev123),如图所示:

springboot项目同时支持http和https访问,springboot,后端技术栈,实战总结,spring boot,http,https

以上操作后即生成证书,证书位置在cmd的路径位置,一般在路径C:\Users\Administrator\server.keystore

2、将证书放入到springboot项目内

将 文件 server.keystore 复制到 Springboot项目resources文件夹下,如图所示:

springboot项目同时支持http和https访问,springboot,后端技术栈,实战总结,spring boot,http,https

 

3、配置application.yml文件

打开application.yml配置文件,添加server相关的ssl配置,如下代码:

server:
  port: 8080
  ssl:
    protocol: TLS
    key-store: classpath:server.keystore
    key-alias: tomcat
    enabled: true
    key-store-password: dev123
    key-store-type: JKS

此时启动springboot项目,已经可以访问https://localhost:8080地址了,但是http请求现在是无法访问的。

4、添加配置类允许http访问

单用上面的配置即可支持https,我们还想支持http访问自动定向到https可以添加如下代码:

先在application.yml配置文件中添加 httpPort: 8888

server:
  port: 8080
  httpPort: 8888
  ssl:
    protocol: TLS
    key-store: classpath:server.keystore
    key-alias: tomcat
    enabled: true
    key-store-password: dev123
    key-store-type: JKS

然后新建HttpsConfig类,

package com.lyf.demo01.config;

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author lxh
 * @Decription 配置同时支持 HTTP 与 HTTPS 访问
 * @date 2023/8/2 10:33
 **/
@Configuration
public class HttpsConfig {
    @Value("${server.httpPort}")
    private Integer httpPort;

    @Bean
    public ServletWebServerFactory serverFactory() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector());
        return tomcat;
    }
    /**
     * 配置http
     * @return
     */
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }
}

注意:上面代码中TomcatServletWebServerFactory 这个类是springboot 2.0.x中的。

5、测试http和https访问

再次运行项目,即可访问https://localhost:8080/和http://localhost:8888/。

至此实现springboot项目既支持http访问又支持https请求。


拓展:keytool知识

keytool为java原生自带,安装java后不需要再进行安装,作为密钥和证书管理工具,方便用户能够管理自己的公钥/私钥及证书,用于认证服务。

springboot项目同时支持http和https访问,springboot,后端技术栈,实战总结,spring boot,http,https

1. 相关概念

keystore
keytool将密钥(key)和证书(certificates)存储在keystore文件中,

密钥需要存储在密钥库中

2. 相关命令

-alias 产生别名
-keystore 指定密钥库的名称(就像数据库一样的证书库,可以有很多个证书,cacerts这个文件是jre自带的,你也可以使用其它文件名字,如果没有这个文件名字,它会创建这样一个)
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
-list 显示密钥库中的证书信息
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目
-import 将已签名数字证书导入密钥库
-keypasswd 修改密钥库中指定条目口令
-dname 指定证书拥有者信息
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度

3. 生成秘钥库

生成密钥库的同时生成一个密钥对,并且密钥库和密钥对都是需要密码的

keytool -genkey -keystore "/Users/..../tmp/keytool/test.keystore" -alias mytest -keyalg RSA -validity 365

4. 查看证书

keytool -list -v -keystore test.keystore -storepass 123456

5. 导入证书

keytool -import -alias test1 -file ./test.crt -keystore ./test.keystore -storepass 789789

6. 导出证书

keytool -export -alias mytest -keystore ./test.keystore -file ./test.crt -storepass 789789

7.修改密码

修改密钥库中指定条目的密码

keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore 所在的密钥库

修改密钥库的密码文章来源地址https://www.toymoban.com/news/detail-856201.html

keytool -storepasswd -keystore ./yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)

到了这里,关于springboot项目同时支持http和https访问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx同时支持Http和Https的配置详解

    当配置Nginx同时支持HTTP和HTTPS时,需要进行以下步骤: 获得SSL证书:从可信任的证书颁发机构(CA)或使用自签名证书创建SSL证书。 将证书和私钥保存到服务器:将SSL证书和私钥文件保存到指定的位置,通常是 /etc/nginx/ssl/ 目录。 配置HTTP服务: 打开 Nginx 配置文件: 通常是

    2024年02月02日
    浏览(39)
  • kubernetes的ingress实现同时支持http和https

    生产环境中对外的服务一般需要配置https服务,使用ingress也可以很方面的添加https的证书。默认情况下,如果为该 Ingress 启用了 TLS,控制器会使用 308 永久重定向响应将 HTTP 客户端重定向到 HTTPS 端口 443。( Ingress 里配置了 https 证书的话,默认就一定会走 https)。即默认情况

    2024年02月15日
    浏览(36)
  • Nginx 一个端口同时支持 http 和 https协议【详细步骤】

    🚀 背景:使用 Nginx 1.24.0 代理前端及后端应用,假设称之为 A 系统。A 系统最初使用的是 http 协议,后来改成了 https 协议。 Nginx 配置 https 访问【图文教程】:Nginx 配置 https 访问 😭 问题:修改为 https 协议后,发现一些问题。即 依赖 A 的系统没有改成 https,导致报错 。 👉

    2024年01月25日
    浏览(36)
  • SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议

    配置nginx.conf文件,这个文件一般在/etc/nginx/...中,由于每个人的体质不一样,也有可能在别的路径里,自己找找... 证书存放位置,可自定义存放位置 两个文件 后端配置 把.pfx拷贝到resource下,然后配置一下yml

    2024年02月02日
    浏览(51)
  • SpringBoot后端服务开启Https协议提供访问(使用阿里云资源)

    目录 概述  申请/下载证书 部署证书 本地测试访问 服务器部署访问  最后/扩展 总结 本篇博客说明如何将SpringBoot项目开启Https协议提供访问。 博文以步骤 【申请/下载证书】,【部署证书】,【本地测试访问】,【服务器部署访问】  , 【扩展】 展开说明。 废话 :当我们

    2024年02月12日
    浏览(33)
  • springboot添加SSL证书,支持https与http

    将证书文件放在/resource目录下 修改配置文件

    2024年02月10日
    浏览(32)
  • LaravelS 项目配置ssl 支持https 访问

    ####laravalS 配置ssl 请求支持https nginx: [emerg] no “ssl_certificate” is defined for the “listen … ssl” directive in /www/server/panel/vhost/nginx/im.17epk.com.conf:14 配置 1、 listen 443 ssl http2; 2.、 #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; ssl_certificate /www/server/

    2024年02月15日
    浏览(31)
  • SpringBoot项目访问后端页面404

            检查项目的路径和mapper映射路径没问题后,发现本级pom文件没有加入web启动模块的pom文件中         maven做项目控制时,要注意将maven模块加入到web启动模块中

    2024年02月07日
    浏览(26)
  • SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦)

    目录   前言 技术栈 功能展示 一、springboot项目添加netty依赖 二、netty服务端 三、netty客户端 四、测试 五、代码仓库地址   专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程

    2024年02月12日
    浏览(39)
  • 【开发细节】SpringBoot项目将接口从HTTP换为HTTPS

    首先需要生成一个 SSL 证书,可以使用 OpenSSL 工具或者自己的 CA 颁发机构来生成证书 ,这里就不赘述了。如果是 测试阶段,也可以使用 self-signed certificate 。 直接使用 jdk的keytool生成 ,具体操作方法如下: 使用管理员身份运行命令提示符 使用命令进入到jdk安装路径的bin文件

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包