OpenSSL: Criando uma Autoridade Certificadora (CA): Difference between revisions

From Wiki
 
(23 intermediate revisions by the same user not shown)
Line 5: Line 5:
= Procedimento =
= Procedimento =


== Instalando ==


1) Instalando os Pacotes
1) Instalando os Pacotes do openssl no RedHat Linux


  yum install -y openssl
  yum install -y openssl
 
= Criando uma Autoridade Certificadora =
= Criando uma Autoridade Certificadora =


1) Criar a chave privada da CA:


== Definindo os valores default para a CA ==
openssl genrsa -out ca-key.pem 4096


Edite o arquivo
2) Gerar o certificado da CA com detalhes personalizados:


* Linux: '''/etc/pki/tls/openssl.cnf'''
openssl req -new -x509 -key ca-key.pem -out ca-cert.pem -days 3650 \
* Windows: '''C:\Program Files\Common Files\SSL\openssl.cnf'''
-subj "/C='''BR'''/ST='''DF'''/L=/O='''TestNet Ltd'''/CN='''Autoridade Certificadora da TestNet Ltd'''/emailAddress='''ditec@test.net'''"


e altere os dados da CA. Um exemplo de configuração final (apenas o bloco que interessa):
= Criar um Certificado para o Servidor =


default_md  = '''sha256'''
1) Criar a chave privada do servidor:
...
default_bits = '''2048'''
'''...'''
countryName                    = Country Name (2 letter code)
countryName_default            = '''BR'''
...
stateOrProvinceName            = State or Province Name (full name)
stateOrProvinceName_default    = '''DF'''
localityName                    = Locality Name (eg, city)
localityName_default            = '''Brasilia'''      ''# Esta linha, normalmente, não existe e você deverá criá-la.''
0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = '''Test Net Ltd'''
organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = '''Ditec'''    ''# Vamos descomentar essa Linha''
commonName                      = Common Name (eg, YOUR name)
commonName_max                  = 64
commonName_default              = '''Autoridade Certificadora da Test Net Ltd'''
emailAddress                    = Email Address
emailAddress_max                = 64
emailAddress_default            = '''[email protected]'''      ''# Vamos criar essa Linha


Salve e feche o arquivo
openssl genrsa -out server-key.pem 2048


2) Criar uma solicitação de certificado (CSR) para o servidor:


Edite o arquivo
openssl req -new -key server-key.pem -out server-csr.pem \
  -subj "/C='''BR'''/ST='''DF'''/L=/O='''TestNet Ltd'''/CN='''server01.test.net'''/emailAddress='''[email protected]'''"


== Criando a CA ==


Execute o comando
Você precisará fornecer informações semelhantes ao preencher o certificado da CA.


perl CA.pl -newca
3) Assinar o CSR do servidor com a CA para obter o certificado do servidor:


ou
openssl x509 -req -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial
  -out server-cert.pem -days 730


./CA -newca
Será criado 2 arquivos:


Com exceção do Common Name, aceite os valores default, pois já alteramos o openssl.cnf anteriormente.
* server-csr.pem: Arquivo de requisição (CSR).  
* server-key.pem: Chave privada assinada
* server-cert.pem: Chave pública assinada


Informe
Você pode apagar o arquivo server-csr.pem, pois ele não será mais utilizado.


CA certificate filename (or enter to create)'''<ENTER>'''
= Verificar os certificados =  
Making CA certificate ...
Generating a 2048 bit RSA private key
.........+++
...........................+++
writing new private key to '/etc/pki/CA/private/./cakey.pem'
Enter PEM pass phrase:'''<INFORME UMA SENHA E ENTER>'''
Verifying - Enter PEM pass phrase:'''<INFORME UMA SENHA E ENTER>'''
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [BR]:'''<ENTER>'''
State or Province Name (full name) [DF]:'''<ENTER>'''
Locality Name (eg, city) [Brasilia]:'''<ENTER>'''
Organization Name (eg, company) [Test Net Ltd]:'''<ENTER>'''
Organizational Unit Name (eg, section) [Ditec]:'''<ENTER>'''
Common Name (eg, your name or your server's hostname) [Autoridade Certificadora da Test Net Ltd]:'''<ENTER>'''
Email Address [[email protected]]:'''<ENTER>'''
Please enter the following 'extra' attributes to be sent with your certificate request
A challenge password []:'''<ENTER>'''
An optional company name []:'''<ENTER>'''
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/./cakey.pem:'''<INFORME A SENHA ANTERIOR E ENTER>'''
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            84:8f:08:9b:5d:d6:df:8f
        Validity
            Not Before: Nov  4 00:28:50 2020 GMT
            Not After : Oct 11 00:28:50 2120 GMT
        Subject:
            countryName              = BR
            stateOrProvinceName      = DF
            organizationName          = Test Net Ltd
            organizationalUnitName    = Ditec
            commonName                = Autoridade Certificadora da Test Net Ltd
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                9B:96:1D:50:C6:E3:69:6B:07:99:17:17:50:91:80:6F:D8:14:4A:C5
            X509v3 Authority Key Identifier:
                keyid:9B:96:1D:50:C6:E3:69:6B:07:99:17:17:50:91:80:6F:D8:14:4A:C5
            X509v3 Basic Constraints:
                CA:TRUE
Certificate is to be certified until Oct 11 00:28:50 2120 GMT (36500 days)
Write out database with 1 new entries
Data Base Updated


= Disponibilizando a CA =
1) Para verificar o certificado da CA:


Agora que criamos a CA, vamos disponibilizar ele para importar no Navegador, ou para ser importado na Trust Store.
openssl x509 -in ca-cert.pem -text -noout


O certificado raiz é o arquivo
3) Para verificar o certificado da CA:


* Linux: '''/etc/pki/CA/cacert.pem'''
openssl x509 -in server-cert.pem -text -noout
* Windows: '''C:\Program Files\OpenSSL-Win64\bin\demoCA\cacert.pem'''


Renomeie-o para ''ca-company.crt'' e coloque em um site interno para download ou distribua via Police no MS Windows (GPO).
= Dicas =


= Criando um par de Chaves=
== Gerar o certificado da CA usando a chave privada protegida por senha ==


Execute o comando no Windows
Execute o comando
 
perl CA.pl -newreq
 
ou no Linux
 
./CA -newreq
 
 
Informe
 
Country Name (2 letter code) [BR]: '''<ENTER>'''
State or Province Name (full name) [DF]:'''<ENTER>'''
Locality Name (eg, city) [Brasilia]:'''<ENTER>'''
Organization Name (eg, company) [Test Net Ltd]: '''<ENTER>'''
Organizational Unit Name (eg, section) [Ditec]:'''<ENTER>'''
Common Name (eg, YOUR name) []:'''www.test.net'''
Email Address [[email protected]]:'''<ENTER>'''
 
Será criado 2 arquivos:


* newreq.pem: Arquivo de requisição (CSR)
  openssl genrsa -aes256 -out ca-key.pem 4096
* newkey.pem: Chave privada assinada


Isso criará uma chave privada encriptada com o algoritmo AES256 e um tamanho de 4096 bits para a sua CA. Ao executar esse comando, você será solicitado a inserir uma senha para proteger a chave privada.


Assine a chave criada [[OpenSSL: Assinando um CSR com a nossa CA]]


= Ver também =
= Ver também =

Latest revision as of 22:04, 7 December 2023

Vou mostrar como criar uma Autoridade Certificadora (CA).

Esse CA vai ser utilizado nos meus exemplos de configuração IBM Sterling.

Procedimento

1) Instalando os Pacotes do openssl no RedHat Linux

yum install -y openssl

Criando uma Autoridade Certificadora

1) Criar a chave privada da CA:

openssl genrsa -out ca-key.pem 4096

2) Gerar o certificado da CA com detalhes personalizados:

openssl req -new -x509 -key ca-key.pem -out ca-cert.pem -days 3650 \
-subj "/C=BR/ST=DF/L=/O=TestNet Ltd/CN=Autoridade Certificadora da TestNet Ltd/emailAddress=[email protected]"

Criar um Certificado para o Servidor

1) Criar a chave privada do servidor:

openssl genrsa -out server-key.pem 2048

2) Criar uma solicitação de certificado (CSR) para o servidor:

openssl req -new -key server-key.pem -out server-csr.pem \
 -subj "/C=BR/ST=DF/L=/O=TestNet Ltd/CN=server01.test.net/emailAddress=[email protected]"


Você precisará fornecer informações semelhantes ao preencher o certificado da CA.

3) Assinar o CSR do servidor com a CA para obter o certificado do servidor:

openssl x509 -req -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial 
  -out server-cert.pem -days 730

Será criado 2 arquivos:

  • server-csr.pem: Arquivo de requisição (CSR).
  • server-key.pem: Chave privada assinada
  • server-cert.pem: Chave pública assinada

Você pode apagar o arquivo server-csr.pem, pois ele não será mais utilizado.

Verificar os certificados

1) Para verificar o certificado da CA:

openssl x509 -in ca-cert.pem -text -noout

3) Para verificar o certificado da CA:

openssl x509 -in server-cert.pem -text -noout

Dicas

Gerar o certificado da CA usando a chave privada protegida por senha

Execute o comando

 openssl genrsa -aes256 -out ca-key.pem 4096

Isso criará uma chave privada encriptada com o algoritmo AES256 e um tamanho de 4096 bits para a sua CA. Ao executar esse comando, você será solicitado a inserir uma senha para proteger a chave privada.


Ver também