Enquanto openssl x509
usa -extfile
, o comando que você está usando openssl req
, precisa -config
especificar o arquivo de configuração.
Portanto, você pode usar um comando como este:
openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \
-days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt
Os prompts usuais para os bits de nome distinto são definidos no arquivo de configuração padrão (que provavelmente está /System/Library/OpenSSL/openssl.cnf
no OS X), mas esse arquivo não é processado quando você usa -config
, portanto, seu arquivo de configuração também deve incluir alguns bits DN. Assim, o acima mencionado cert_config
pode ser algo como isto:
[ req ]
prompt = no
distinguished_name = my dn
[ my dn ]
# The bare minimum is probably a commonName
commonName = secure.example.com
countryName = XX
localityName = Fun Land
organizationName = MyCo LLC LTD INC (d.b.a. OurCo)
organizationalUnitName = SSL Dept.
stateOrProvinceName = YY
emailAddress = ssl-admin@example.com
name = John Doe
surname = Doe
givenName = John
initials = JXD
dnQualifier = some
[ my server exts ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
# 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth:
# extendedKeyUsage = serverAuth
# see x509v3_config for other extensions
Conforme indicado no comentário, você provavelmente pode deixar de fora a maioria dos campos DN. Para o uso de HTTPS, acho que tudo o que você precisa é de uma CN que corresponda ao seu nome de host.
A seção Nome distinto e Formato da seção de atributo do req (1) mostra como você pode modificar a configuração acima para solicitar valores (e fornecer valores padrão) se desejar gerar vários certificados / solicitações semelhantes.
Se você precisar de outras extensões de certificado, verifique em
x509v3_config (5)
quais outros bits você pode especificar nas seções de extensão.