Ssl 如何从证书(.cer)、证书链(.p7b)和密钥(.key and.pem)生成keystore.p12

Ssl 如何从证书(.cer)、证书链(.p7b)和密钥(.key and.pem)生成keystore.p12,ssl,openssl,keystore,Ssl,Openssl,Keystore,我有以下文件: filename.key(RSA私钥) filename.pem(证书请求) certificate.cer(证书) CertificateChain.p7b 我已从CA收到这些文件,包括证书链。 我需要生成“keystore.p12”以使用以下信息为spring引导应用程序配置SSL server: port: 443 ssl: key-store: keystore.p12 key-store-password: <

我有以下文件:

  • filename.key(RSA私钥)
  • filename.pem(证书请求)
  • certificate.cer(证书)
  • CertificateChain.p7b
我已从CA收到这些文件,包括证书链。 我需要生成“keystore.p12”以使用以下信息为spring引导应用程序配置SSL

 server:
    port: 443
    ssl:
        key-store: keystore.p12
        key-store-password: <your-password>
        keyStoreType: PKCS12
        keyAlias: <my alias>
服务器:
港口:443
ssl:
密钥存储:keystore.p12
密钥存储密码:
密钥类型:PKCS12
keyAlias:

有人能帮我生成“keystore.p12”吗?

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

.key
通常用于一个单独的私钥,但是查看它以确定,并确定它的格式,因为有很多。你不应该从CA那里得到你的私钥;它应该在本地生成,通常在使用它的机器上生成,并且至少由该机器的“所有者”或管理员生成。如果您谈论的是公司、组织、机构或办公室内部的CA,可能会有一种例外情况——在这种情况下,运行CA的人可能是负责所有机器安全的同一个人——反之亦然,这取决于您的视角——对他们来说,生成密钥和证书可能是有意义的

.pem
用于中的许多内容,该文件的内容是什么(或是什么)比它是pem更重要。看第一行
----开始(somewords)--
,看看这个词是什么。这应该紧跟在base64中的数据(一个由字母、数字和特殊字符组成的实心块+/=)后面或在几个标题行之后,然后是一个匹配的
----END(somewords)----
行。如果终点线后面有一个或多个类似的块,请查看所有这些块

.cer
通常用于“DER”(二进制)或“PEM”(如上)格式的证书
.p7b
类似地用于包含证书(尤其是链中使用的证书)的“伪”PKCS7消息,这些证书位于DER或PEM中。更重要的是,p7b有时用于包括终端实体(服务器)证书在内的整个链,有时用于不包括EE证书的链的其余部分,这关系到哪个。如果您有OpenSSL,或者可以获得它(例如,通过安装软件包,或者对于Windows,我推荐安装程序),或者可以将数据移动到拥有它的计算机上,那么请执行以下操作:

 # 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-将其转换为DER格式,并将其追加

  • 如果您现在拥有OpenSSL支持的PEM格式之一的私钥,并且证书链包括PEM格式的EE证书,请执行以下操作:


谢谢你有用的描述。我试图更新原始问题文本中的密钥/证书描述。加上在p7b上执行命令(DER格式),我得到多个证书块。也许它会给你一些其他的线索来更具体地帮助我。再次感谢!好的,RSA私钥满足我的第1点(它是一种OpenSSL可用格式),证书请求现在无关紧要,所以忽略它。在certificate.cer和chain.p7b中,您拥有哪些证书很重要。如我所说,首先查看
pkcs7-print_certs
命令中的subject=和issuer=行;加上添加
opensslx509-noout-subject-issuer-in certificate.cer
。根据具体位置,请参见我的第2-4点。
    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)