语法错误:“(”使用bash命令创建openssl证书时发生意外错误

时间:2019-01-24 01:48:49

标签: bash openssl

使用here上的指令在openssl证书中定义SAN字段,我使用以下命令生成自己的自签名证书:

openssl genrsa -out domain.org.key
openssl req -newkey rsa:2048 -nodes -keyout domain.org.key -subj "/C=CN/ST=GD/L=SZ/O=Acme, Inc./CN=*.domain.org" -out domain.org.csr
openssl x509 -req -extfile <(printf "subjectAltName=DNS:domain.org,DNS:www.domain.org") -days 365 -in domain.org.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out domain.org.crt

但是,出现以下错误:

Syntax error: "(" unexpected

我发现所用的bash语法没有任何特别的错误,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

对我来说,这种错误消息看起来不像Bash。相反,Bash错误消息看起来像这样:

bash: syntax error near unexpected token `('

我建议仔细检查您是在Bash中运行这些命令,而不是在其他Shell中运行。 (进程替换不是POSIX指定的,因此并非所有的Shell都支持它。)

如果事实证明Bash不可用,则可以使用一个临时文件:

printf "subjectAltName=DNS:domain.org,DNS:www.domain.org" > tmp-ext-file
openssl x509 -req -extfile tmp-ext-file -days 365 -in domain.org.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out domain.org.crt

或标准输入

printf "subjectAltName=DNS:domain.org,DNS:www.domain.org" \
| openssl x509 -req -extfile /dev/stdin -days 365 -in domain.org.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out domain.org.crt