首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从证书(.cer)、证书链(.p7b)和密钥(.key和.pem)生成.p7b

如何从证书(.cer)、证书链(.p7b)和密钥(.key和.pem)生成.p7b
EN

Stack Overflow用户
提问于 2019-10-07 14:29:34
回答 1查看 3.7K关注 0票数 0

我有以下文件:

  • filename.key (RSA私钥)
  • filename.pem (证书请求)
  • certificate.cer (证书)
  • CertificateChain.p7b

我已经从CA收到了这些文件,包括证书链。我需要生成“keystore.p12”,以便使用以下信息为春季引导应用程序配置SSL。

代码语言:javascript
复制
 server:
    port: 443
    ssl:
        key-store: keystore.p12
        key-store-password: <your-password>
        keyStoreType: PKCS12
        keyAlias: <my alias>

有人能帮我生成'keystore.p12‘吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-08 11:28:50

文件扩展名实际上并不控制文件的格式或内容,尽管通常它们至少应该提供部分描述。类似地,basenames (在扩展名之前)应该描述文件中的内容,但并不总是正确地这样做。重要的是档案里有什么。

.key通常用于单独的私钥,但是查看它可以确定,并且确定它的格式,因为有很多种格式。您永远不应该从CA获取私钥;它应该在本地生成,通常是在将使用它的机器上,至少由该机器的‘所有者’或管理员生成。可能有一种例外--如果您是指公司、组织、机构或办公室的内部CA --在这种情况下,CA的运行人员可能是负责所有机器上的安全的同一个人--或者反之亦然,这取决于您的观点--他们生成密钥和证书可能是有意义的。

.pem用于PEM格式中的许多东西,而该文件的内容(或内容)比它是PEM更重要。查看第一行-----BEGIN (somewords)-----,查看单词(S)是(Are)。应该立即或在几行头行之后使用base64中的数据(由字母、数字和特殊字符+/=组成的实体块),然后是匹配的-----END (somewords)-----行。如果结束线后面跟着另一个类似的块,或多个,请查看所有这些块。

.cer通常用于证书的'DER‘(二进制)或'PEM’(如上面)格式。.p7b类似地用于包含证书(特别是链中使用的证书)的“虚拟”PKCS7消息,无论是DER还是PEM。更重要的是,p7b有时用于整个链,包括end entity(服务器) cert,有时用于链的其余部分( EE cert除外),这关系到哪一个环节。如果您有OpenSSL --或者可以获得它(例如,通过安装一个软件包,或者http://www.slproweb.com/products/Win32OpenSSL.html推荐安装程序),或者可以将您的数据移动到有它的机器上--那么就这样做:

代码语言:javascript
复制
 # if the p7b file is in PEM format (you can see ----BEGIN PKCS7----- line)
 openssl pkcs7 -in file.p7b -print_certs 
 # if the p7b file is in DER format (looks like garbage in a text editor or display)
 openssl pkcs7 -in file.p7b -inform der -print_certs
 # for now look only at the subject= and issuer= lines to see
 # for each cert in the file who it is for, and if/how they chain

然后:

  • 如果.key文件是OpenSSL支持的一种PEM格式的私钥,您可以使用它;否则,如果.key是其他格式的私钥,或者.pem是或包含某种格式的私钥,则需要转换和/或提取它:告诉我们这些文件的更多内容。
  • 如果.p7b文件是PEM或DER格式,则将其扩展的输出(从上面)放在文件中。如果这包括EE证书,则跳过下一步。
  • 如果.p7b文件不包括EE证书,但.cer文件是该证书,则如果是PEM格式,只需将其附加到包含.p7b输出的文件中;如果以DER格式将其转换为openssl x509 -in file.cer -inform der并追加该文件。
  • 如果您现在拥有OpenSSL支持的一种PEM格式的私钥,以及包含PEM格式的EE证书的证书链,请执行以下操作
代码语言:javascript
复制
    openssl pkcs12 -export -in chain.pem -inkey key.pem -out newfile.p12 [-name x]
    # the -name option provides the 'alias' used by Java
    # if not specified it defaults to the numeral 1 (one)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58271672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档