Quero criar silenciosamente, de maneira não interativa, um certificado SSL. Ou seja, sem ser solicitado a fornecer dados.
A maneira normal de criar o certificado seria:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \
-keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Eu tentei o seguinte:
openssl genrsa -out server.key 2048
touch openssl.cnf
cat >> openssl.cnf <<EOF
[ req ]
prompt = no
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
C = GB
ST = Test State
L = Test Locality
O = Org Name
OU = Org Unit Name
CN = Common Name
emailAddress = test@email.com
EOF
openssl req -x509 -config openssl.cnf -nodes -days 7300 \
-signkey server.key -out /etc/ssl/private/pure-ftpd.pem
Mas ainda recebo uma solicitação de dados.
openssl req -x509 -config openssl.cnf -nodes -days 7300 -signkey server.key -out /etc/ssl/private/pure-ftpd.pem
-signkey
. Esta não é umaopenssl req
opção válida no meu sistema. A mensagem de erro terá isso como a primeira linha:unknown option -signkey
2> /dev/null
.Respostas:
O que falta é incluir o assunto do certificado no diretório
-subj
bandeira. Eu prefiro isso a criar um arquivo de configuração, porque é mais fácil integrar-se a um fluxo de trabalho e não requer limpeza posteriormente.Chave de uma etapa e geração de RSE:
Geração de certificado sem senha, autoassinada em uma etapa:
Nenhum desses comandos solicitará nenhum dado.
Veja minha resposta a essa pergunta quase idêntica no Superusuário.
fonte
-subj
parâmetro, principalmente quando você acessa extensões v3 e parâmetros subjectAltName.-batch
(modo não-interativo)-subj
é um CSR em linha válido básico.O comando que você está procurando é:
Alterações da sua versão:
-new
é necessário para gerar qualquer coisa-key
usado no lugar de-signkey
fonte