Instale o certificado SSL raiz

1

Eu criei certificados raiz e certificado de servidor, assinado com root. Como posso instalar meu certificado raiz para remover o aviso sobre conexão não confiável? update, dpkg-reconfigure não funciona. Estou usando o OpenSSL, navegador Iceweasel, no Kali Linux v.1.1.0

EDITAR

Etapas: Criando chave secreta da CA raiz:

dd if=/dev/random of=.rnd count=64 bs=32
openssl genrsa -rand .rnd -out org.key 2048

Criando solicitação de certificado:

openssl req  -new -key org.key -config org.cnf -out org.csr

com:

org.cnf
[ req ] 
default_bits = 2048 
distinguished_name = req_distinguished_name 
extensions = v3_req 
x509_extensions = usr_cert 
[ req_distinguished_name ] 
countryName = US 
countryName_default = US 
stateOrProvinceName  = City
stateOrProvinceName_default = City
localityName = City
localityName_default = City 
organizationName = Company
organizationName_default = Company
organizationalUnitName = CA 
organizationalUnitName_default = CA 
commonName = CAuthority 
commonName_default = CAuthority 
emailAddress = [email protected]
emailAddress_default = [email protected]
[ v3_req ] 
basicConstraints = CA:TRUE 
nsComment = "CA certificate of PTI" 
nsCertType = sslCA 
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
basicConstraints=critical,CA:TRUE

Criando CA raiz:

openssl  x509 -req -signkey org.key -in org.csr -extfile org.cnf -out org.crt -days 1830

Isso é tudo para root, agora eu preciso criar um certificado de servidor para instalá-lo no Apache. Criando chave secreta:

dd if=/dev/urandom of=.rnd count=64 bs=32;
openssl genrsa -rand .rnd -out httpd.key 2048; 

Criando solicitação de certificado:

openssl req  -new -key httpd.key -config httpd.cnf -out httpd.csr

com:

httpd.cnf
[ req ] 
default_bits = 2048 
distinguished_name = req_distinguished_name 
extensions = v3_req 
x509_extensions = usr_cert 
[ req_distinguished_name ] 
countryName = country [US] 
countryName_default = US 
stateOrProvinceName  = province [City] 
stateOrProvinceName_default = City 
localityName = locality [City] 
localityName_default = City
organizationName = organization [Company] 
organizationName_default = Company
organizationalUnitName = OU_name 
organizationalUnitName_default = Webserver 
commonName = commonName 
commonName_default = "localhost" 
emailAddress = email 
emailAddress_default = [email protected]
[ v3_req ] 
basicConstraints = CA:false 
nsComment = "Apache Server Certificate" 
nsCertType = server
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
basicConstraints=critical,CA:TRUE

Afinal, eu assino link com este comando:

openssl ca -notext -in httpd.csr -cert org.crt -keyfile org.key -out httpd.crt -md sha1 -days 90 -verbose;

Então eu instalei meu link e link para o Apache, então, quando estou tentando link , ele diz "Connection Untrusted" . Adicionando link às Autoridades no Iceweasel, não tem efeito. Ainda "Conexão não confiável".

    
por Yurii N. 27.12.2015 / 19:58

1 resposta

0

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
    
por 28.12.2015 / 09:24