如何为使用 OpenSSL 创建客户端证书指定 CA 私钥密码
Posted
技术标签:
【中文标题】如何为使用 OpenSSL 创建客户端证书指定 CA 私钥密码【英文标题】:How to specify CA private key password for client certificate creation using OpenSSL 【发布时间】:2015-08-06 05:46:36 【问题描述】:我正在构建一个命令行脚本,以使用 OpenSSL“迷你 CA”功能创建客户端证书。
我有一个 CA 证书和 用密码加密的 CA 私钥。有了这些东西,我正在尝试创建客户端证书并偶然发现了命令行语法。 如何为 CA 的私钥指定密码?
到目前为止,我已经...
openssl x509
-req
-in client.csr
-signkey client.key
-passin pass:clientPK
-CA client-ca.crt
-CAkey client-ca.key
-CAkeypassin pass:client-caPK <-- does not work
-CAcreateserial
-out client.crt
-days 365
查看突出显示的参数。我期待这样的事情,但我在文档中的任何地方都找不到它。
更正
只是为了记录。 -signkey
参数用于自签名证书。 CA 无权访问客户端的私钥,因此不会使用它。相反,-passin
参数指的是 CA 的私钥。
openssl x509
-req
-in client.csr
-CA client-ca.crt
-CAkey client-ca.key
-passin pass:CAPKPassword
-CAcreateserial
-out client.crt
-days 365
【问题讨论】:
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?。 是的...投票关闭并迁移到超级用户。 是的,编写 openssl 命令并不是真正的编程——它只是感觉而已。 【参考方案1】:使用-passin pass
,如下所示。
openssl x509
-req
-in client.csr
-signkey client.key
-passin pass:clientPK
-CA client-ca.crt
-CAkey client-ca.key
-passin pass:secret <-- try this
-CAcreateserial
-out client.crt
-days 365
【讨论】:
你是对的。我在添加-signkey
参数时犯了一个错误,因此那里已经标有-passin
参数的密码指的是客户端的私钥——这实际上对CA 不可用。
“passin”参数各部分的含义是什么?什么是“通过”,什么是“秘密”?
逐字“通过”表示密码在命令行中给出,密码应替换为实际密码。有一些选项可以为 file/fd 提供密码,有关详细信息,请参阅man openssl
。
多次出现“passin”参数是否正常/有意?第一个不是简单地被第二个替换了吗?以上是关于如何为使用 OpenSSL 创建客户端证书指定 CA 私钥密码的主要内容,如果未能解决你的问题,请参考以下文章
如何为使用 OpenSSL 生成的证书提供多行证书名称 (CN)