Você precisa definir CA:True
como uma extensão básica no root.crt
.
O navegador não permitirá que você adicione um certificado não-CA à lista Authorities
, e é por isso que você está recebendo a mensagem de erro.
Você pode verificar se esta extensão está no certificado com:
openssl x509 -noout -text -in root.crt
Isso imprimirá uma representação textual do seu certificado, que você pode procurar pelo seguinte extrato:
X509v3 Basic Constraints: critical
CA:TRUE
Se não estiver lá, você precisará modificar o arquivo openssl
config e adicionar o seguinte ao bloco apontado por x509_extensions
:
basicConstraints = critical, CA:TRUE
O homem x509v3_config lhe dará todos os detalhes, mas aqui está um exemplo do openssl.cnf
arquivo em uma caixa do Fedora 23:
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = /etc/pki/CA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
Você notará que x509_extensions
aponta para uma seção mais abaixo no arquivo chamado usr_cert
, que tem o seguinte:
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
basicConstraints=CA:TRUE
Observe que o nome user_cert
é simplesmente esse - um nome, portanto, o fato de seu certificado ser um certificado de CA não tem importância. Se você sofre de transtorno obsessivo-compulsivo, então você pode alterar usr_cert
para CA_cert
em ambos.
O texto acima deve ser adicionado ao arquivo de configuração que você está usando. Ou seja, se você não estiver adicionando a opção -config
ao comando openssl
, ele usará o arquivo de configuração padrão da distribuição. Isso geralmente está no diretório padrão do OpenSSL, que pode ser encontrado em:
openssl version -d