将证书签名请求传送到 opennsl x509 命令中

amp*_*and 3 ssl

在 openssl 文档中,它指出(在http://www.openssl.org/docs/apps/x509.html#INPUT_OUTPUT_AND_GENERAL_PURPOS)“-in”选项

如果未指定此选项,则指定要从中读取证书的输入文件名或标准输入。

我正在尝试弄清楚如何使用发送 CSRstdin来签署 CSR(使用私有 CA)。以下行会生成错误

openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40 "-----BEGIN CERTIFICATE REQUEST-----###########-----END CERTIFICATE REQUEST-----"
Run Code Online (Sandbox Code Playgroud)

(其中######代表CSR数据)

错误是:

unknown option -----BEGIN CERTIFICATE REQUEST-----###########-----END CERTIFICATE REQUEST-----
Run Code Online (Sandbox Code Playgroud)

它将输入作为一个选项。

正在做

openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40 -in request.pem
Run Code Online (Sandbox Code Playgroud)

"其中 request.pem 包含第一行中两者之间完全相同的数据是成功的。

我究竟做错了什么?

mgo*_*ven 5

呃,您没有在标准输入上提供 CSR,而是将其指定为参数。要从标准输入提供它,您需要从文件重定向它,或者从另一个命令通过管道传输它。例如:

echo "-----BEGIN CERTIFICATE REQUEST-----###########-----END CERTIFICATE REQUEST-----" | openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40
Run Code Online (Sandbox Code Playgroud)

或者,如果 CSR 存储在 csr.pem 中:

openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40 < csr.pem
Run Code Online (Sandbox Code Playgroud)