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

标签 java android spring-boot ssl https

我有来自 sslforFree.com 的证书它包含3个文件:
1-ca_bundle.crt
2-证书.crt
3-private.key
我可以使用由 Java key 工具创建的自签名证书配置我的 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 ?
任何帮助,将不胜感激!!

最佳答案

您应该像使用自签名证书一样做同样的事情。
使用 keytool 将您的三个文件导入 keystore 。 证书.crt 是一个保存您的公钥和认证数据的文件, ca_bundle.crt 是一个文件,其中包含认证您的 key 的证书颁发机构的公钥 - 这称为证书链,私钥 是一个保存 key 对的私钥的文件(公钥是证书的一部分),用于在 SSL 连接的某个阶段加密数据。
服务器部分
在服务器端,您需要创建一个包含您的私钥、证书(带有公钥)和证书链的 keystore 。 Here you can find the command that fits your case .
客户部分
在您的客户端,您可以将任何证书/ key 固定在根到叶链中。您的固定 key 离叶子越近,您将获得更安全的解决方案。缺点是叶证书通常具有较短的生命周期,因此当您更新服务器证书时,您还必须升级客户端密码。
可以在 this SO answer 中找到有关如何生成 sha256 摘要的良好说明。 .

关于java - 如何在 Spring-Boot 中使用 SSL 证书并为 Android 客户端生成公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63557511/

相关文章:

java - Spring-Boot JAR 中的 BOOT-INF 和 META-INF 目录是什么?

java - 属性文件中的正则表达式

java - 哪个 Java XML Parser 用于简单处理?

java - 推广移动搜索算法以使用递归

android - 如何更改 Android 应用程序的名称?

android - 从android执行.bat文件

java - 从 Android 向 PLC 发送一个 boolean 值

java - 如何将 CompletableFuture 与 Spring Boot 结合使用以提供可靠的服务

java - spring boot logback-spring.xml maxFileSize 不适用于 SizeAndTimeBasedRollingPolicy

java - 通过 IntelliJ 运行配置运行 Spring boot