我从sslforFree.com获得了一个证书,其中包含3个文件:
1-ca_bundle.crt
2证书
3个私钥
我可以使用由Java密钥工具创建的自签名证书来配置Spring-Boot应用程序,现在的问题是如何使用这三个文件?
我希望应该只有一个文件可以放入我的Keystore中,但是现在只有3个文件,我不知道如何使用它们。
另一方面,我将android应用程序作为客户端。它需要一个 .pem
文件作为证书,其中包含如下格式的公钥(我的意思是标签的值):
<pin-set>
<pin digest="SHA-256">k3XnEYQCK79AtL9GYnT/nyhsabas03V+bhRQYHQbpXU=</pin>
</pin-set>
现在如何生成包含此格式公钥的
.pem
文件?
我进行了搜索,还找到了一些命令来连接
.crt
和
.key
文件,结果是
.pem
,但是它包含一些Base64文本,该文本在文件的开头和结尾处包括以下内容:
----- BEGIN证书-----
xxxxxx
-----结束证书-----
----- BEGIN RSA私钥-----
xxxxxx
-----结束RSA私钥-----
如何为客户创建公钥?
我是否需要将该
.pem
文件放入我的密钥库?
任何帮助,将不胜感激!!
解决方案如下:
您应该执行与使用自签名证书相同的操作。
使用keytool将三个文件导入密钥库。 certificate.crt 是一个包含您的带有证书数据的公钥的文件, ca_bundle.crt 是一个包含对您的证书进行认证的证书颁发机构的公钥的文件-这称为证书链, private.key 是包含密钥对私钥(公钥是证书的一部分)的文件,该文件用于在SSL连接的特定阶段加密数据。
服务器部分
在服务器端,您需要创建一个密钥库,其中将包含您的私钥,您的证书(带有公钥)和证书链。 Here you can find the command that fits your case。
客户部分
在您的客户端,您可以将任何证书/密钥固定在根到叶子的链中。您固定的钥匙越接近叶子,您将获得越安全的解决方案。缺点是叶子证书的寿命通常很短,因此,当您更新服务器证书时,也将必须升级客户端引脚。
可以在this SO answer中找到有关如何生成sha256摘要的良好说明。