pipe道证书签名请求到opennsl x509命令

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

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

我试图找出如何使用stdin发送CSR来签署CSR(使用私有CA)。 以下行会生成一个错误

 openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40 "-----BEGIN CERTIFICATE REQUEST-----###########-----END CERTIFICATE REQUEST-----" 

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

错误是:

 unknown option -----BEGIN CERTIFICATE REQUEST-----###########-----END CERTIFICATE REQUEST----- 

它需要input是一个选项。

 openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40 -in request.pem 

其中request.pem包含EXACT第一行中两个" s "之间的相同数据是" SUCCESSFUL”。

我究竟做错了什么?

呃,你没有提供标准input的CSR,你指定它作为参数。 要提供它从标准input您需要redirect它从一个文件,或pipe从另一个命令。 例如:

 echo "-----BEGIN CERTIFICATE REQUEST-----###########-----END CERTIFICATE REQUEST-----" | openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40 

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

 openssl x509 -req -CA CA.pem -passin pass:abcdefg -set_serial 40 < csr.pem