我正在尝试制作一个脚本来通过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
因此,我找不到任何其他示例,该示例如何自动实现对opensl命令的期望,并将其粘贴到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[@]}"
答案 0 :(得分:0)
实际上我认为我已经解决了这个问题... 我在上面的示例中使用了读取函数和数组,这正是我想要在此处实现的目标。
"openssl x509 -req -extfile <(printf "subjectAltName=${array[@]}") -days 365 "
如果有人有更好的解决方案,请随时在此处提交。
谢谢
自拍