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配置路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解mybatis @SelectProvider 注解

    详解mybatis @SelectProvider 注解

    这篇文章主要介绍了mybatis @SelectProvider 注解的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-12-12
  • 如何使用SpringSecurity保护程序安全

    如何使用SpringSecurity保护程序安全

    这篇文章主要介绍了如何使用SpringSecurity保护程序安全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • SpringBoot框架集成ElasticSearch实现过程示例详解

    SpringBoot框架集成ElasticSearch实现过程示例详解

    这篇文章主要为大家介绍了SpringBoot如何集成ElasticSearch的实现过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • java迭代器中删除元素的实例操作详解

    java迭代器中删除元素的实例操作详解

    在本篇内容里小编给各位分享了一篇关于java迭代器中删除元素的实例操作详解内容,有兴趣的朋友们可以学习下。
    2021-01-01
  • Java之map的常见用法讲解与五种循环遍历实例代码理解

    Java之map的常见用法讲解与五种循环遍历实例代码理解

    map是一组键值对的组合,通俗理解类似一种特殊的数组,a[key]=val,只不过数组元素的下标是任意一种类型,而且数组的元素的值也是任意一种类型。有点类似python中的字典。通过"键"来取值,类似生活中的字典,已知索引,来查看对应的信息
    2021-09-09
  • Java commons-httpclient如果实现get及post请求

    Java commons-httpclient如果实现get及post请求

    这篇文章主要介绍了Java commons-httpclient如果实现get及post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • MybatisPlus 自动填充的实现

    MybatisPlus 自动填充的实现

    这篇文章主要介绍了MybatisPlus 自动填充的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java 从json提取数组并转换为list的操作方法

    Java 从json提取数组并转换为list的操作方法

    这篇文章主要介绍了Java 从json提取出数组并转换为list,使用getJSONArray()获取到jsonarray后,再将jsonArray转换为字符串,最后将字符串解析为List列表,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • java爱心代码完整示例(脱单必备)

    java爱心代码完整示例(脱单必备)

    最近看到个好玩的,就是用代码实现爱心的形状,对于不懂编程的人来说,这是一个很好的玩的东西,这篇文章主要给大家介绍了关于java爱心代码的相关资料,需要的朋友可以参考下
    2023-07-07
  • Java Web制作登录验证码实现代码解析

    Java Web制作登录验证码实现代码解析

    这篇文章主要介绍了Java Web制作登录验证码实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论