SpringBoot使用JKS或PKCS12证书实现https

这篇具有很好参考价值的文章主要介绍了SpringBoot使用JKS或PKCS12证书实现https。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot使用JKS或PKCS12证书实现https

生成JKS类型的证书

可以利用jdk自带的keytool工具来生成证书文件,
默认生成的是JKS证书
cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件

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

SpringBoot使用JKS或PKCS12证书实现https,JavaWeb笔记,SpringBoot技术笔记,spring boot,https,后端

在springboot中配置这个JKS证书

需要在application.yml或application.properties配置文件里
配置server.ssl相关配置如下:

server:
  port: 443  #https默认访问端口
  servlet:
    context-path: /demo
    session:
      timeout: 30m  #默认会话过期时间30分钟
    encoding:
      enabled: true
      charset: UTF-8
      force: true
  tomcat:
    uri-encoding: UTF-8
  ssl:
    # 证书存放的位置
    key-store: 'classpath:server.keystore'
    # 证书别名
    key-alias: tomcat
    # 证书类型
    key-store-type: JKS
    # 证书密码
    key-store-password: 123456

生成PKCS12类型的证书

keytool工具可以将刚刚生成的JKS证书升级为PKCS12类型的证书,

PKCS12类型的证书是目前行业标准格式。

升级命令如下,执行该命令后会生把之前的证书重命名为server.old.keystore,然后生成新的证书文件server.keystore

keytool -importkeystore -srckeystore ./server.keystore -destkeystore ./server.keystore -deststoretype pkcs12

SpringBoot使用JKS或PKCS12证书实现https,JavaWeb笔记,SpringBoot技术笔记,spring boot,https,后端

在springboot中配置PKCS12证书

需要在application.yml或application.properties配置文件里
配置server.ssl相关配置如下:

server:
  port: 443  #https默认访问端口
  servlet:
    context-path: /demo
    session:
      timeout: 30m  #默认会话过期时间30分钟
    encoding:
      enabled: true
      charset: UTF-8
      force: true
  tomcat:
    uri-encoding: UTF-8
  ssl:
    # 证书存放的位置
    key-store: 'classpath:server.keystore'
    # 证书别名
    key-alias: tomcat
    # 证书类型
    key-store-type: PKCS12
    # 证书密码
    key-store-password: 123456

配置tomcat连接器实现同时使用https和http访问

需要在springboot中新建一个配置类,配置tomcat里的http连接器

代码如下:


package cn.test;

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;

@Configuration
public class HttpConnectorConfig {


    /**
     * 配置http连接器
     * 当访问80端口时,自动重定向到443端口
     * 即访问http时,自动重定向到https端口
     * @return Connector
     */
    public Connector getHttpConnector(){
        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(){
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(){
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(getHttpConnector());
        return tomcat;
    }






}

以上操作配置完成后,启动springboot项目

可以观察到控制台已经启用了https和http这2种访问端口

[main] [] o.s.b.w.e.t.TomcatWebServer [TomcatWebServer.java : 220] Tomcat started on port(s): 443 (https) 80 (http) with context path '/demo'

打开浏览器测试

访问 http://localhost/demo/home

浏览器会重定向到 https://localhost/demo/home

SpringBoot使用JKS或PKCS12证书实现https,JavaWeb笔记,SpringBoot技术笔记,spring boot,https,后端文章来源地址https://www.toymoban.com/news/detail-690012.html

到了这里,关于SpringBoot使用JKS或PKCS12证书实现https的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Tomcat配置https(jks证书请求)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 上一篇文章已经提到tomcat的pfx证书请求和开启https的做法 链接https://blog.csdn.net/qq_46153140/article/details/123344395?spm=1001.2014.3001.5501 这篇文章则是tomcat的jks的生成 生成思路: key+csr=crt;crt+key = pfx;pfx+key=jks 

    2024年02月16日
    浏览(27)
  • openssl 常用命令 pkcs12

    openssl pkcs12 官方文档 The pkcs12 command allows PKCS#12 files (sometimes referred to as PFX files) to be created and parsed. PKCS#12 files are used by several programs including Netscape, MSIE and MS Outlook. pkcs12 命令是用来创建或者解析 PKCS12 格式(有时候也称PFX格式)的文件。 pkcs12 格式文件用于 Netscape, MSIE, MS Out

    2024年02月22日
    浏览(27)
  • springboot整合https使用自签名证书实现浏览器和服务器之间的双向认证

    效果描述: 本地环境  两台以上电脑  可以实现安装客户端证书的电脑可以访问springboot启动项目,没有安装客户端证书的电脑无法访问springboot启动项目 1.操作:需要安装openssl工具 工具包:Win64OpenSSL_Light-3_3_0.exe 或者Win64OpenSSL_Light-3_3_0.msi  官网:[ Downloads ] - /source/index.html

    2024年04月28日
    浏览(34)
  • Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)

    3DES(又叫Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。 它相当于是对每个数据块 应用三次DES加密算法 。密钥长度是128位,192位(bit),如果密码位数少于等于64位,加密结果与DES相同。 原版DES容易被破解,新的3DES出现,增加了加密安全性,避

    2023年04月09日
    浏览(33)
  • JavaDemo——使用jks的https

    java使用https主要就是设置下sslContext,sslContext初始化需要密钥管理器和信任管理器,密钥管理器用于管理本地证书和私钥,信任管理器用于验证远程服务器的证书,这两种管理器都需要KeyStore初始化,两种管理器可以按需只设置一种或者都设置,KeyStore就用到jks文件和密钥库密

    2024年02月15日
    浏览(19)
  • SpringBoot 结合RabbitMQ与Redis实现商品的并发下单【SpringBoot系列12】

    SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。 程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发 1 项目准备 SpringBoot 整合 RabbitMQ 消息队列【SpringBoot系列11】本文章 基于这个项目来开

    2023年04月19日
    浏览(27)
  • jdk 中的 keytool 的使用,以及提取 jks 文件中的公钥和私钥

    这里暂时只需要知道如何使用就可以了。 首先是生成一个密钥, 解释一下这里的选项, -alias 密钥对的名称 -keypass 密钥密码 -validity 有效期,这里是以天为单位 -storepass 存储库的密码 -keystore 指定生成的密钥文件存放的位置,这里的  fanyfull.jks  表示的是当前目录下的  fan

    2024年02月08日
    浏览(42)
  • springboot集成Elasticsearch7.16,使用https方式连接并忽略SSL证书

    千万万苦利用科学上网找到了,记录一下

    2024年02月09日
    浏览(36)
  • C++使用openssl对AES-256-ECB PKCS7 加解密

    2024年02月03日
    浏览(24)
  • redis(12):springboot使用redis注解做缓存

    1 新建springboot项目   2 相关注解 @EnableCaching 在启动类上加上注解启动缓存 #作用在你要缓存的数据上 @Cacheable(key=\\\"#id\\\",cacheNames=\\\"com.sxt.service.impl.MenuServiceImpl\\\") @Cacheput 解决脏读 @CachEvict(解决脏读) @Cacheconfig(全局的配置缓存) 3 修改yml

    2024年02月15日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包