springboot中server.ssl.key-store配置路径的问题小结

 更新时间:2024年02月01日 09:58:55   作者:丸子的博客  
这篇文章主要介绍了springboot中server.ssl.key-store配置路径的问题,文中还记录了Spring Boot SSL(https)实例,介绍在web程序中使用自签名的SSL(HTTPS)证书及创建SSL认证,感兴趣的朋友跟随小编一起看看吧

springboot中server.ssl.key-store配置路径的问题

在yml中配置路径为:
key-store: classpath:xtszhcj.jks
启动服务报错:
获取的路径前有tomcat.basedir路径file:的字样+classpath(正确路径),导致取不到对应路径文件报错。

原因:

之前一直可以用,发现有人将tomcat版本改为8.0.21,之前使用tomcat版本为8.5.16。改为8.5.16就好了。
源码追踪,发现获取key-store路径前会加file:导致获取不到文件后,自动前面加上tomcat.basedir.所以日志打印中有上诉路径找不到。具体为什么会加file:没有再去跟踪代码。

扩展:

Spring Boot SSL(https)实例

此篇博文记录了在web程序中使用自签名的SSL(HTTPS)证书及创建SSL认证。

SSL关键的配置

Spring Boot中HTTPS的配置(application.properties)

server.port=8443
server.ssl.key-alias=selfsigned_localhost_sslserver
server.ssl.key-password=changeit
server.ssl.key-store=classpath:ssl-server.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS

将HTTP重定向到HTTPS

private Connector redirectConnector() {
  Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
  connector.setScheme("http");
  connector.setPort(8080);
  connector.setSecure(false);
  connector.setRedirectPort(8443);
  return connector;
}

基本概念

SSL:安全套接字层(Secure Sockets Layer)。此协议用于两个系统网络连接和传输时对数据的加密。传输过程中防止了黑客的读取和窜改。

TLS:传输层安全(Transport Layer Security)相对于SSL更加的安全,相当于SSL的升级版。目前所有的ca(certificate authorities)机构都是基于TLS的,但是目前在互联网上SSL更加流行。

HTTPS:超文本传输协议安全(Hyper Text Transfer Protocol Secure)在web网站上使用了SSL。这样会比HTTP更加安全。

信任库及密钥库(Truststore and Keystore):这两个库都是存储了SSL证书。truststore存储了公钥信息,keystore存储私钥信息。

下面是创建自签名证书

keytool -genkey -alias selfsigned_localhost_sslserver -keyalg RSA -keysize 2048 -validity 700 -keypass changeit -storepass changeit -keystore ssl-server.jks

解析下:

-genkey:生成证书;

-alias selfsigned_localhost_sslserver:设置证书的别名;

-keyalg RSA -keysize 2048 -validity 700:truststore和keystore的密码;

-keystore ssl-server.jks:存储密钥的文件。其中JKS的含义是Java Key Store

执行完上面的代码后,会询问一些问题如下:

查看jks中的证书信息:

下面是关于程序方面的内容

添加RESTful接口

@RestController
class SecuredServerController{
    @RequestMapping("/secured")
    public String secured(){
        System.out.println("Inside secured()");
        return "Hello user !!! : " + new Date();
    }
}

将ssl-server.jks放到resources中在application.properties中配置如下:

server.port=8443
server.ssl.key-alias=selfsigned_localhost_sslserver
server.ssl.key-password=changeit
server.ssl.key-store=classpath:ssl-server.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS

这样Spring Boot就配置好HTTPS了

url输入https://localhost:8443/secured

就进入了https站点了

将HTTP重定向到HTTPS

将8080端口重定向到8443上面:

@Bean
public EmbeddedServletContainerFactory servletContainer() {
  TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
      @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(redirectConnector());
  return tomcat;
}
private Connector redirectConnector() {
  Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
  connector.setScheme("http");
  connector.setPort(8080);
  connector.setSecure(false);
  connector.setRedirectPort(8443);
  return connector;
}

源码打包下载地址:

https://github.com/fengfanchen/Java/tree/master/ssl-server

到此这篇关于springboot中server.ssl.key-store配置路径的问题的文章就介绍到这了,更多相关springboot server.ssl.key-store配置路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 将idea中xml文件背景颜色去除的图文教程

    将idea中xml文件背景颜色去除的图文教程

    这篇文章主要介绍了将idea中xml文件背景颜色去除,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • idea如何通过maven指定JDK版本

    idea如何通过maven指定JDK版本

    这篇文章主要介绍了idea如何通过maven指定JDK版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 二进制中1的个数

    二进制中1的个数

    这篇文章介绍了二进制中1的个数,有需要的朋友可以参考一下
    2013-09-09
  • Java上传下载文件并实现加密解密

    Java上传下载文件并实现加密解密

    这篇文章主要介绍了Java上传下载文件并实现加密解密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Netty 拆包沾包问题解决方案详解

    Netty 拆包沾包问题解决方案详解

    这篇文章主要为大家介绍了Netty 拆包沾包问题解决方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Java多线程之Semaphore实现信号灯

    Java多线程之Semaphore实现信号灯

    这篇文章主要给大家分享的是Java多线程之Semaphore实现信号灯的练习,emaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;下面一起进入文章学习Semaphore的具体内容
    2021-10-10
  • SpringBoot生成PDF的五种实现方法总结

    SpringBoot生成PDF的五种实现方法总结

    这篇文章主要介绍了SpringBoot生成PDF的五种实现方法,在开发中经常会遇到需要进行对一些数据进行动态导出PDF文件,然后让用户自己选择是否需要打印出来,这篇文章我们来介绍五种实现方法,需要的朋友可以参考下
    2024-10-10
  • 详解JavaScript中的函数声明和函数表达式

    详解JavaScript中的函数声明和函数表达式

    这篇文章主要介绍了详解JavaScript中的函数声明和函数表达式,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • 教你快速学会JPA中所有findBy语法规则

    教你快速学会JPA中所有findBy语法规则

    这篇文章主要介绍了教你快速学会JPA中所有findBy语法规则,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring实战之属性覆盖占位符配置器用法示例

    Spring实战之属性覆盖占位符配置器用法示例

    这篇文章主要介绍了Spring实战之属性覆盖占位符配置器用法,结合实例形式分析了Spring属性覆盖占位符配置器相关原理、配置与使用技巧,需要的朋友可以参考下
    2019-12-12

最新评论