Você pode fazer isso na linha de comando com read
e usar a variável de resultado no comando openssl
:
read -p "FQDN? " cn; openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout $cn.key -subj "/CN=$cn\/emailAddress=admin@$cn/C=US/ST=Ohio/L=Columbus/O=Widgets Inc/OU=Some Unit" -out $cn.csr
Se isso é algo que você faz com frequência, crie uma função e adicione-a ao arquivo .bashrc
, que permite substituir o prompt por um argumento:
function csr { openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout $1.key -subj "/CN=$cn\/emailAddress=admin@$1/C=US/ST=Ohio/L=Columbus/O=Widgets Inc/OU=Some Unit" -out $1.csr }
Depois, envoque-o sempre que precisar:
csr example.com
O seguinte arquivo openssl.conf faz quase a mesma coisa:
[req]
default_bits=2048
encrypt_key=no
default_md=sha256
distinguished_name=req_subj
[req_subj]
commonName="Fully Qualified Domain Name (FQDN)"
emailAddress="Administrative Email Address"
countryName="Country Name (2 letter code)"
countryName_default=US
stateOrProvinceName="State Name (full name)"
stateOrProvinceName_default=Ohio
localityName="Locality Name (e.g., city)"
localityName_default=Columbus
organizationName="Organization Name (e.g., company)"
organizationName_default=Widgets Inc
organizationalUnitName="Organizational Unit Name (e.g., section)"
organizationalUnitName_default=Some Unit
Em seguida, defina sua variável de ambiente OPENSSL_CONF
para esse arquivo
export $OPENSSL_CONF=~/.dotfiles/openssl.conf
ou especificá-lo via switch no CLI
openssl req -new -config openssl.conf -keyout example.key -out example.csr
Eu digo quase porque ele ainda solicita esses atributos, mas agora eles são o padrão, para que você possa martelar a chave Return
até o final depois de especificar o domínio e seu e-mail.