Como leio as informações do certificado automaticamente usando o OpenSSL

3

Para gerar um arquivo de certificado SSL para o Apache , estou usando o comando abaixo:

 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert

E eu o alimente manualmente com estes parâmetros:

Country Name (2 letter code) [AU]:AU
State or Province Name (full name): Myname
[Some-State]:Some-State
Locality Name (eg, city) []:City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Internet
Organizational Unit Name (eg, section) []:Section
Common Name (e.g. server FQDN or YOUR name) []:yourname
Email Address []:[email protected]

É possível inseri-los a partir de um arquivo ou diretamente de uma linha de comando do OpenSSL usando opções?

Não há dicas nas páginas do manual do OpenSSL.

    
por AJN 09.03.2016 / 14:56

3 respostas

6

Você pode criar um arquivo de configuração e usá-lo em seu comando. Você poderia, por exemplo, criar um arquivo de configuração chamado openssl.cnf e usá-lo assim:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert -config ./openssl.cnf

No seu caso, você pode definir os seguintes parâmetros:

[ req_distinguished_name ]
# Variable name             Prompt string
#-------------------------    ----------------------------------
0.organizationName          = Organization Name (company)
organizationalUnitName          = Organizational Unit Name (department, division)
emailAddress                = Email Address
emailAddress_max            = 40
localityName                = Locality Name (city, district)
stateOrProvinceName         = State or Province Name (full name)
countryName             = Country Name (2 letter code)
countryName_min             = 2
countryName_max             = 2
commonName              = Common Name (hostname, IP, or your name)
commonName_max              = 64

Mais pode ser encontrado em link

    
por 09.03.2016 / 15:05
6

Em algum lugar no seu arquivo de configuração, você precisa do seguinte:

[ req ]
prompt                 = no
distinguished_name     = req_distinguished_name

[ req_distinguished_name ]
countryName             = GB
stateOrProvinceName     = Provinceshire
localityName            = Locationsville
organizationName        = Example Ltd
organizationalUnitName  = PKI
commonName              = www.example.com

A prompt = no na seção [ req ] interrompe os prompts que você vê e altera o formato esperado na seção distinguished_name . Se você não tiver essa opção, o OpenSSL espera o formato de prompt que você tem atualmente.

Observe que a ordem dos campos é alterável e determina a ordem no certificado.

    
por 09.03.2016 / 15:31
4

Também pode ser executado a partir de um script:

#!/bin/bash

country=WORLD   
state=mystate    
locality=Mycity   
organization=myorg    
organizationalunit=IT   
[email protected]

 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
 /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert -subj
 "/C=$country/ST=$state/L=$locality/O=$organization/OU=$organizationalunit/CN=$commonname/emailAddress=$email"

Encontrado em: link

    
por 09.03.2016 / 15:42