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

From Wiki
 
(21 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:


== Criando a CA ==
openssl genrsa -out ca-key.pem 4096


Execute o comando
2) Gerar o certificado da CA com detalhes personalizados:


  openssl req -new -x509 -key ca-key.pem -out ca-cert.pem -days 3650 \
  openssl req -new -x509 -key ca-key.pem -out ca-cert.pem -days 3650 \
  -subj "/C='''BR'''/ST='''DF'''/L=/O='''Test Net Ltd'''/CN='''Autoridade Certificadora da Test Net Ltd'''/emailAddress='''[email protected]'''"
  -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:


Com exceção do Common Name, aceite os valores default, pois já alteramos o openssl.cnf anteriormente.
openssl genrsa -out server-key.pem 2048


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


  CA certificate filename (or enter to create)'''<ENTER>'''
  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]'''"
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 [ditec@test.net]:'''<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 =


Agora que criamos a CA, vamos disponibilizar ele para importar no Navegador, ou para ser importado na Trust Store.
Você precisará fornecer informações semelhantes ao preencher o certificado da CA.


O certificado raiz é o arquivo
3) Assinar o CSR do servidor com a CA para obter o certificado do servidor:


* Linux: '''/etc/pki/CA/cacert.pem'''
openssl x509 -req -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial
* Windows: '''C:\Program Files\OpenSSL-Win64\bin\demoCA\cacert.pem'''
  -out server-cert.pem -days 730


Renomeie-o para ''ca-company.crt'' e coloque em um site interno para download ou distribua via Police no MS Windows (GPO).
Será criado 2 arquivos:


= Criando um par de Chaves=
* server-csr.pem: Arquivo de requisição (CSR).
* server-key.pem: Chave privada assinada
* server-cert.pem: Chave pública assinada


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


perl CA.pl -newreq
= Verificar os certificados =


ou no Linux
1) Para verificar o certificado da CA:


  ./CA -newreq
  openssl x509 -in ca-cert.pem -text -noout


3) Para verificar o certificado da CA:


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


Country Name (2 letter code) [BR]: '''<ENTER>'''
= Dicas =
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:
== Gerar o certificado da CA usando a chave privada protegida por senha ==
 
Execute o comando


* 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