【问题标题】:How to use SSL certificate in Spring-Boot and generating Public-key for android clients如何在 Spring-Boot 中使用 SSL 证书并为 Android 客户端生成公钥
【发布时间】:2020-08-24 08:40:47
【问题描述】:

我从sslforFree.com 获得了包含 3 个文件的证书:

1-ca_bundle.crt

2-certificate.crt

3-private.key

我可以使用由 Java 密钥工具创建的自签名证书配置我的 Spring-Boot 应用程序,现在我的问题是如何使用这三个文件??

我原以为应该只有一个文件可以放入我的 Keystore,但现在有 3 个文件,我不知道如何使用它们。

另一方面,我有 android 应用程序作为客户端。它需要有一个 .pem 文件作为证书,其中包含如下格式的公钥(我的意思是标签的值):

<pin-set>
<pin digest="SHA-256">k3XnEYQCK79AtL9GYnT/nyhsabas03V+bhRQYHQbpXU=</pin>
</pin-set>

现在我怎样才能生成 .pem 文件包含这种格式的公钥?

我已经搜索并发现了一些连接 .crt.key 文件的命令,结果是 .pem 但是它包含一些 Base64 文本,在文件的开头和结尾包含这些:

-----开始证书-----

xxxxx

-----结束证书-----

-----开始 RSA 私钥--

xxxxx

-----结束 RSA 私钥-----

如何为客户创建公钥?

我是否需要将该 .pem 文件放入我的 Keystore 中??

任何帮助将不胜感激!

【问题讨论】:

    标签: java android spring-boot ssl https


    【解决方案1】:

    您应该像使用自签名证书一样做。

    使用 keytool 将您的三个文件导入密钥库。 certificate.crt 是一个包含您的公钥和认证数据的文件,ca_bundle.crt 是一个包含认证您的密钥的证书颁发机构的公钥的文件 - 这称为证书链,private.key 是保存密钥对的私钥的文件(公钥是证书的一部分),用于在 SSL 连接的特定阶段加密数据。

    服务器部分

    在服务器端,您需要创建一个包含您的私钥、证书(带有公钥)和证书链的密钥库。 Here you can find the command that fits your case.

    客户端部分

    在您的客户端,您可以将任何证书/密钥固定在根到叶链中。您的固定密钥离叶子越近,您将获得更安全的解决方案。缺点是叶子证书的生命周期通常很短,因此当您更新服务器证书时,您还必须升级客户端密码。

    关于如何生成 sha256 摘要的很好的说明可以在this SO answer 中找到。

    【讨论】:

    • 首先感谢您的回答,它帮助我找到了一种方法,但我心中还有一个问号,如何为客户生成“SHA-256”公钥作为.pem 文件?
    • 感谢您的回答,伙计,您完全解决了我的问题,如果您有时间,我很乐意将您的答案编辑为更完整的版本,无论如何谢谢
    • 已更新。添加了关于证书固定的几句话。
    【解决方案2】:

    您可以使用 KeyStore explorer 之类的工具来帮助您转换密钥库和证书格式。或者您可以使用 openssl 命令行工具。 如果您从 CA 获得的文件是二进制文件(不是文本),它们可能采用 DER 编码,但如果需要,它们可以轻松转换为 PEM(文本)编码。 对于 Java 服务器,您需要一个包含 certificate.crt 的密钥库,其中包括来自 private.key 的私钥。您还应该有一个信任库,您可以在其中导入 ca_bundle.crt。 Java 密钥库的默认格式现在是 PKCS#12。

    【讨论】:

    • 我知道这些基本的哥们,无论如何谢谢你的帮助!
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    相关资源
    最近更新 更多