使用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语法没有任何特别的错误,有人可以帮忙吗?
答案 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