Firebase信任库,并将Spring设置为接受Firebase的证书

时间:2019-05-01 00:19:52

标签: spring firebase spring-boot ssl

我在Firebase中托管了一个Angular PWA,并且我正在尝试与Spring Boot服务进行通信(此刻在本地运行)。

Firebase出于自己的良心,会自动为托管应用创建SSL证书,因此它是安全的,只能通过HTTPS访问。

我无法解决的问题是如何设置我的Spring Boot服务以接受/信任/允许这些连接,以便PWA可以进行基本的REST调用(我什至需要这样做?)。

我的第一个想法是将Firebase的证书添加到Spring引导信任库中,但是我做错了或者这是错误的方法,因为我只是将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

我不确定我是否完全错了,或者错过了至关重要的一步。

1 个答案:

答案 0 :(得分:1)

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

您可能已经知道,SSL与“公钥密码术”一起使用,它需要两个密钥:一个私有密钥和一个公共密钥 SSL证书基本上是公钥以及其他一些验证信息。

尽管您可以使用keytool提取 SSL证书,但这不会给我们至关重要的私钥。出于安全原因,可能无法从Firebase导出私钥

那该怎么办?

  1. 如果您只是在本地进行测试,则可以只使用纯HTTP(没有安全性,但是您也不需要执行任何操作)-或使用self-signed certificate。如果使用自签名证书,则可能还需要add the self-signed certificate to your browser

  2. 如果您的Spring Boot服务有一个域名,则可以从Let's Encrypt和configure it for Spring Boot获得该域的免费 SSL证书。

顺便说一句,我注意到您尝试创建truststore而不是keystoretruststore实际上是针对不同的东西(我们称之为 client-mutual-auth )-可能不是您所需要的。有关更多信息,请参见this previous thread

相关问题