Firebase truststore并设置Spring以接受来自Firebase的证书

Firebase truststore并设置Spring以接受来自Firebase的证书,spring,firebase,spring-boot,ssl,Spring,Firebase,Spring Boot,Ssl,我有一个托管在Firebase中的Angular PWA,我有一个正在尝试与之通信的Spring引导服务(目前正在本地运行) Firebase出于善意,自动为托管应用程序创建SSL证书,因此该证书是安全的,并且只能通过HTTPS访问 我无法解决的是如何设置Spring引导服务来接受/信任/允许这些连接,以便PWA可以进行基本的REST调用(例如,我是否需要这样做?) 我的第一个想法是将来自Firebase的证书添加到Spring boot truststore,但要么我做得不对,要么这是错误的方

我有一个托管在Firebase中的Angular PWA,我有一个正在尝试与之通信的Spring引导服务(目前正在本地运行)

Firebase出于善意,自动为托管应用程序创建SSL证书,因此该证书是安全的,并且只能通过HTTPS访问

我无法解决的是如何设置Spring引导服务来接受/信任/允许这些连接,以便PWA可以进行基本的REST调用(例如,我是否需要这样做?)

我的第一个想法是将来自Firebase的证书添加到Spring boot truststore,但要么我做得不对,要么这是错误的方法,因为我刚刚得到了
javax.net.ssl.SSLHandshakeException:no cipher suites in common

我为此运行的命令如下所示:

从Angular应用程序URL下载证书

keytool -printcert -sslserver app.example.com:443 -rfc > temp.cert
从该证书创建信任库

keytool -keystore truststore.jks -alias example.com -import -file temp.cert
然后我将它加载到我的Spring boot
application.yml
文件中

server:
  port: 8443
  ssl:
    key-store: classpath:truststore.jks
    key-password: secret
    key-alias: example.com

我真的不确定我是否完全错了,或者错过了一个重要的步骤

不幸的是,这种方法不起作用,但可能不是必需的

您可能知道,SSL与“公钥加密”配合使用,这需要两个密钥:私钥和公钥。SSL证书基本上是公钥加上一些其他验证信息

虽然我们可以像您所做的那样使用
keytool
提取SSL证书,但这不会给我们关键的私钥。出于安全原因,可能无法从Firebase导出私钥

那么我们能做些什么呢

  • 如果您只是在本地进行测试,那么要么使用普通HTTP(没有安全性,但也不需要做任何事情),要么使用。如果使用自签名证书,您可能还需要

  • 如果您有Spring引导服务的域名,那么您可以从Let's Encrypt and获得该域的免费SSL证书


  • 另外,我注意到您试图创建一个
    信任库
    ,而不是
    密钥库
    truststore
    实际上是用于不同的东西(我们称之为客户机交互身份验证)——可能不是您需要的东西。有关更多信息,请参阅。

    我来这里是想看看什么不可以做,多亏了你的经验,我本来也打算做同样的事情,现在不再做了:)