openssl req -new com alguns valores de subjuste padrão

4

Eu quero usar o openssl para criar um CSR enquanto fornece algumas das respostas para o nome do país, estado ou nome da província, etc. mas ainda quero que ele solicite o nome comum (FQDN). Até agora eu tenho algo parecido com:

openssl req -new -sha256 -key example.com.key -out example.com.csr -subj "/C=US/ST=Ohio/L=Columbus/O=Widgets Inc/OU=Some Unit"

Isso, no entanto, não me solicita o nome comum. Qual é a maneira correta de fazer isso?

    
por Kyle Decot 28.09.2016 / 16:25

2 respostas

5

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.

    
por 29.09.2016 / 19:56
1

Não tenho certeza se há uma maneira de fazer isso apenas com valores de linha de comando. Eu sempre usei o arquivo de configuração para fazer isso. Por exemplo, as entradas para definir os padrões em sua configuração podem parecer com:

policy = policy_anything

# For the 'anything' policy, which defines allowed DN fields
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
commonName = supplied
name = optional
emailAddress = optional

####################################################################
# request handling

[ req ]
default_bits = 2048
default_keyfile = private/key.pem
default_md = default
distinguished_name = standard_dn

####################################################################
# DN (Subject) handling

[ standard_dn ]

countryName = Country Name (2 letter code)
countryName_default = US
countryName_min = 2
countryName_max = 2

stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = California

localityName = Locality Name (eg, city)
localityName_default = Beverily Hills

commonName = Common Name (eg, YOUR name)
commonName_default = John Smith
commonName_max = 64

emailAddress = Email Address
emailAddress_default = [email protected]
emailAddress_max = 64
    
por 29.09.2016 / 04:29

Tags