【发布时间】:2019-01-25 04:17:38
【问题描述】:
我正在尝试制作一个脚本来通过 openssl 生成 csr 文件。我想提示用户提供额外的 alt_names。 Openssl.cnf 是静态的 并且不能在里面做太多事情。如果用户需要 1 个 SAN 就可以了 所以我可以通过系统变量导出它。
[alt_names]
DNS.1=${ENV::SAN}
如果我需要更多 SAN,那么配置下的语法如下:
[alt_names]
DNS.1=test.example.com
DNS.2=www.example.com
IP.1=1.1.1.1
IP.2-1.1.2.2
所以,我找不到任何其他示例如何自动化它期望 openssl 命令它自己并将其粘贴到 cli 中,如下所示:
openssl x509 -req -extfile <(printf "subjectAltName=DNS:www.exmple.com,DNS:test.example.com,IP:1.1.1.1") -days 365
我正在考虑在 shell 中使用读取功能来提示用户提供他的 DNS:xxxxxx 或 IP:xxxx 完整信息,直到用户按下 [enter] 我找到了一些示例,但无法弄清楚如何将其导出到 openssl 命令中。
我找到的一个例子是:
array=()
while IFS= read -r -p "Next item (end with an empty line): " line; do
[[ $line ]] || break # break if line is empty
array+=("$line")
done
printf '%s
' "Items read:"
printf ' «%s»
' "${array[@]}"
【问题讨论】: