我有以下文件:
- 文件名.密钥(RSA 私钥(
- 文件名.PEM (证书请求(
- 证书.cer(证书(
- 证书链.p7b
我已从 CA 收到这些文件,包括证书链。 我需要生成"keystore.p12"来使用以下信息为 Spring 引导应用程序配置 SSL。
server:
port: 443
ssl:
key-store: keystore.p12
key-store-password: <your-password>
keyStoreType: PKCS12
keyAlias: <my alias>
任何人都可以帮我生成"keystore.p12"吗?
文件扩展名实际上并不控制文件的格式或内容,尽管通常它们应该至少提供部分描述。类似地,基本名称(在扩展名之前(应描述文件中的内容,但并不总是正确描述。重要的是文件中的内容。
.key
通常用于单独的私钥,但请查看它以确保,并确定它的格式,因为有很多。您永远不应该从 CA 获取私钥;它应该在本地生成,通常在使用它的计算机上生成,并且至少由该计算机的"所有者"或管理员生成。如果您谈论的是公司、组织、机构或办公室的内部 CA,则可能会有某种例外 - 在这种情况下,运行 CA 的人可能是负责所有机器安全性的同一个人 - 反之亦然,具体取决于您的观点 - 并且他们生成密钥和证书可能是有意义的。
.pem
用于PEM格式的许多事情,该文件的内容是什么(或是什么(比它是PEM的事实更重要。查看第一行-----BEGIN (somewords)-----
,看看单词是什么。这应该紧跟在后面,或者在几个标题行之后是 base64 中的数据(一个由字母、数字和特殊字符 +/= 组成的实心块(,然后是匹配的-----END (somewords)-----
行。如果 END 行后面跟着另一个或几个类似的块,请查看所有这些块。
.cer
通常用于"DER"(二进制(或"PEM"(如上所述(格式的证书。.p7b
同样用于包含证书的"虚拟"PKCS7 消息,尤其是链中使用的证书 - 在 DER 或 PEM 中。更重要的是,p7b有时用于整个链,包括最终实体(服务器(证书,有时用于链的其余部分,不包括EE证书,这很重要。如果你有OpenSSL——或者可以得到它(例如,通过安装一个软件包,或者对于Windows,我推荐 http://www.slproweb.com/products/Win32OpenSSL.html 的安装程序(,或者可以将你的数据移动到有它的机器上——那么做:
# 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 证书的证书链,请执行
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)