繁体   English   中英

如何在 Spring-Boot 中使用 SSL 证书并为 Android 客户端生成公钥

[英]How to use SSL certificate in Spring-Boot and generating Public-key for android clients

我从sslforFree.com获得了一个证书,其中包含 3 个文件:

1-ca_bundle.crt

2-certificate.crt

3-private.key

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

我希望应该只有一个文件可以放入我的密钥库,但现在有 3 个文件,我不知道如何使用它们。

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

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

现在如何生成包含这种格式的公钥的.pem文件?

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

-----开始认证-----

xxxxxx

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

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

xxxxxx

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

如何为客户创建公钥?

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

任何帮助,将不胜感激!!

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

您应该像使用自签名证书一样做同样的事情。

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

服务器部分

在服务器端,您需要创建一个包含您的私钥、您的证书(带有公钥)和证书链的密钥库。 在这里您可以找到适合您情况的命令

客户端部分

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

可以在此 SO answer 中找到有关如何生成 sha256 摘要的良好说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM