Substituindo certificados autoassinados expirados no NSX-T

Twitter Linkedin

Olá pessoal, já fazia algum tempo que não escrevia nada, o objetivo aqui é escrever um “step-by-step” de como realizar a troca do certificado autoassinado do NSX-T, acredito que tenhamos outros artigos como esse espalhados pela internet, porém, o objetivo aqui é termos um artigo sobre o assunto em Português e tudo em um unico lugar, o que acredito que ainda não tenhamos.

 

A troca do certificado autoassinado é importante, primeiro por eliminar o alerta que existe no dashboard da gerência do NSX-T quando esse certificado está vencido, outro ponto é a questão da segurança, é uma boa prática manter os certificados válidos, mesmo quando esses são autoassinados e não “assinados” por uma entidade certificadora oficial.

 

Se em seu ambiente o NSX-T faz parte de uma instalação VCF, VMware Cloud Foundation, existe um script e um processo mais simples, sendo assim, use esse artigo somente se estiver utilizando o NSX-T em modo standalone.

Para a troca do certificado autoassinado, vamos precisar de:

1 – Um servidor/VM com Windows Server para ser uma CA (Root Certificate Authority).

2 – Uma VM com Windows e OpenSSL instalado, para gerar o certificado que vai ser assinado pelo CA. (não vou demonstrar aqui a instalação do OpenSSL, a instalação é muito simples e segue o padrão Next > Next > Finish já conhecido em outros softwares Windows.

3 – Acesso a gerência do NSX-T, no meu laboratório a versão atual é a 3.2.2.

4 – Um API Manager/Client qualquer, nesse exemplo utilizei o PostMan.

 

1 – Configurando o servidor rodando Windows Server para assinar certificados compatíveis com o NSX-T:

A primeira tarefa que deve ser realizada é preparar o Windows Server rodando o serviço “Active Directory Certificate Services”, caso essa “role” ainda não esteja instalada em seu servidor, instale através da aplicação Server Manager do Windows Server:

Acesse o Server Manager do Windows Server

Open the Server Manager application and choose to add a new Role or Feature.

Habilite a função (feature) Active Directory Certificate Services:

2 – Exportando o certificado Root contido no Certification Authority do Windows Server:

Feito a instalação da feature anterior, inicie a aplicação Certification Authority no windows server:

Clique com o botão direito em Autoridade Certificadora e depois em Properties

Clique em View Certificate

Depois em Detail e então Copy to File…

Escolha a opção Base-64 encoded X.509 (.CER)

Salve o arquivo com o nome root-ca , para não misturar com os arquivos que vamos precisar nos próximos passos.

3 – Criando um template para o NSX-T no certification authority

Ainda no app Ceritification Authority, clique com o botão direito em Certificate Templates e então Manage.

Procure pelo certificado Web Server e então duplique ele selecionando a opção Duplicate Template.

Vá até a aba Compatibility e escolha as opções Windows Server 2008 e Windows 7 / Server 2008 R2, respectivamente nas opções Compatibility Settings e Certificate recipient.

Na aba General, escolha um nome para esse Template, no meu caso NSX-T-VBRAIN, e em Validity Period escolha o tamanho do período que você deseja que o template seja válido, no meu caso deixei o default de 2 anos.

Agora na aba Extensions, clique em Basic Constraints e então em Edit

Esteja certo que a opção Enable this extension está habilitada.

Agora que o template está pronto, volte até o Ceritification Authority e clique com o botão direito em Certificate Templates, New e então em Certificate Template to Issue. Importe o template criado anteriormente.

 

4 – Criando um CSR (Certificate Signing Request) e um certificado através do OpenSSL.

Primeiro, precisamos criar um arquivo de configuração que usaremos para criar um Certificate Signing Request (CSR) e uma chave privada. Use o texto abaixo e configure com o commonName, DNS e endereços IP de cada uma das managers do NSX-T, caso tenha 3.

Ao final, salve o arquivo CSR como nsx.cfg. Faça esse procedimento na VM que está com OpenSSL instalado, pois vamos precisar do CSR para criar um certificado através do OpenSSL.

Altere somente os campos que estivem em Vermelho, de acordo com o seu ambiente, caso você tenha 3 managers no NSX-T, coloque o FQDN e IP de todas elas a baixo de alt_names, inclusive da VIP utilizada entre elas, a ordem não importa.

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
countryName = BR
stateOrProvinceName = MG
localityName = Uberlandia
organizationName = Laboratorio
organizationalUnitName = TI
commonName = nsx.laboratorio.com.br
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = nsx.laboratorio.com.br
DNS.2 = nsx-manager-01.laboratorio.com.br
DNS.3 = nsx-manager-02.laboratorio.com.br
DNS.4 = nsx-manager-03.laboratorio.com.br
IP.1 = 192.168.0.100
IP.2 = 192.168.0.101
IP.3 = 192.168.0.102
IP.4 = 192.168.0.103

Conforme informado anteriormente, salve o arquivo como nsx.cfg, precisaremos dele no próximo passo, no OpenSSL.

Agora, abra um prompt de comando como administrador, navegue até a pasta que foi salvo o arquivo NSX.cfg utilizando o comando CD, e então crie um certificado e uma key pelo OpenSSL usando o seguinte comando:

openssl req -out nsx.csr -newkey rsa:2048 -nodes -keyout nsx.key -config nsx.cfg -sha256

Ao final do processo, teremos dois novos arquivos, NSX.CSR e NSX.KEY

5 – Assinando o certificado criado através do OpenSSL no Authentication Authority do Windows Server, utilizando o template criado anteriormente.

Agora, através de um navegador web em qualquer maquina, acesse o certification authority do Windows Server utilizado anteriormente para criar um template, apenas digite o ip ou FQDN do Windows Server e acrescente “/certsrv”.

https://<IP DO WINDOWS SERVER>/certsrv/

Clique em Request a certificate

E então, em Advanced certificate request.

Agora, copie e cole o conteudo do arquivo NSX.CSR, aquele gerado anteriormente pelo OpenSSL, apenas abra em um Notepad++ ou qualquer outro editor de texto, dê um Control-C e Control-V do conteúdo dentro

Copie o conteúdo:

E cole aqui

Em template, use o template criado anteriormente no passo 2

Logo após, faça o download do certificado assinado, esteja certo que a opção Base 64 encoded está marcada, e então clique em Download certificate.

 

6 – Importando o certificado assinado no NSX-T

Primeiro, acesse a manager (se tiver apenas uma) ou se o ambiente tiver mais de uma, acesse elas pela VIP.

Então, vá em System > Certificates

Clique em IMPORT > CERTIFICATE

 

ATENÇÃO: Será necessário importar tanto o certificado quando o root, porém, se a ordem seguida for primeiro o Root, logo após a tentativa de importar o certificado o NSX vai acusar um erro, pois vamos precisar importar o Root dentro da FULL CHAIN (cadeia total) do certificado , para simplificar, siga a ordem deste tutorial.

Conforme informado na imagem a seguir, copie o conteudo do certificado assinado pela CA do Windows, aquele que fizemos o download no passo anterior e o conteúdo do certificado Root, que foi feito o donwload na primeira etapa, coloque os dois na seguinte ordem:

_________________________________________________

—–BEGIN CERTIFICATE—–
CONTEUDO DO CERTIFICADO ASSINADO PELA CA
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
CERTIFICADO ROOT DA CA
—–END CERTIFICATE—–
_____________________________________________________

Desmarque a opção Service Certificate

Agora, copie o conteúdo da Key, gerada no passo em que geramos ela no OpenSSL, e copie aqui:

Clique em SAVE.

Agora, seguindo a ordem correta, importe também o certificado ROOT.

Apenas copie e cole o conteúdo do certificado Root e desmarque a opção Service Certificate.

7 – Ativando o certificado novo pelo Postman.

Agora, utilizando qualquer computador que esteja com o Postman instalado, vamos ativar o certificado recem importado para todas as managers.

Primeiro, com o Postman aberto, clique em Authorization, então em Type escolha Basic Auth.

Preencha com o usuário Admin e senha da manager do NSX-T.

Agora, vamos checar se o certificado importado anteriormente está correto e pronto para uso, antes de realizar a substituição.

Altere o comando no Postman para GET e utilize a seguinte sintaxe:

GET https://<nsx-manager-01-ip>/api/v1/trust-management/certificates/<certificate-id>?action=validate

Altere os campos nsx-manager-01-ip para o IP da manager 01, repita esse processo com as 3 managers, em Certificate-id, utilize o id do certificado importado anteriormente, ele pode ser obtido na manger, aqui um exemplo:

No Postman, clique em SEND

O resultado esperado deverá ser um Status: OK

Repita o processo com as 3 managers.

Agora que o certificado foi validado e está pronto para uso, substitua pelo novo certificado alterando no Postman de GET para POST e utilize a seguinte sintaxe:

https://<nsx-manager-01>/api/v1/node/services/http?action=apply_certificate&certificate_id=<ID>

Repita esse comando para as três managers, e para o IP/FQDN da VIP utilize o seguinte comando:

https://<nsx-manager-VIP>/api/v1/cluster/api-certificate?action=set_cluster_certificate&certificate_id=<ID>

O resultado esperado será o número 1

 

PRONTO, nesse momento os certificados foram atualizados e o erro de certificado expirado no dashboard da manager deve desaparecer.

 

Leave a Reply

Your email address will not be published.Required fields are marked *