Observação:

Usar o OCI Certificates para Emitir um Certificado Interno e Hospedar um Site Protegido por TLS/SSL no Servidor Nginx

Introdução

Neste tutorial, descrevemos como usar os Certificados do Oracle Cloud Infrastructure (OCI) para emitir um certificado interno para hospedar um site protegido por TLS (Transport Layer Security)/SSL (Secure Sockets Layer) no servidor Nginx. O OCI Certificates é um serviço para criação e gerenciamento de certificados TLS. O serviço permite que as organizações criem hierarquias de Autoridade de Certificação (CA) privadas e certificados TLS que podem ser implantados e renovados automaticamente na tenancy do cliente, integrados aos serviços do OCI, como OCI Load Balancer e OCI API Gateway. Também podemos usar este serviço para gerar certificados para nossos servidores web internos hospedados no Nginx.

Para ativar a criptografia TLS/SSL em seu servidor Nginx, você precisa de um certificado TLS/SSL. A Solicitação de Assinatura do Certificado (CSR) é uma solicitação enviada a uma CA para obter um certificado. A CSR contém informações sobre sua organização e o domínio para o qual você está solicitando o certificado. Essas informações são verificadas pela CA antes da emissão do certificado TLS/SSL. A verificação dessas informações garante que o certificado seja emitido para o proprietário legítimo do domínio. Ao criar uma CSR, você também gera uma chave privada. Essa chave privada é usada para decriptografar dados criptografados com a chave pública correspondente. É crucial gerar esta chave com segurança e mantê-la segura.

Objetivos

Pré-requisitos

Tarefa 1: Instalar a CLI do OCI na Instância do OCI Compute

Tarefa 2: Criar uma Autoridade de Certificado (CA) no OCI

Crie uma Autoridade de Certificação (CA) usando o serviço OCI Certificate, que será usado para emitir certificados internos para nosso site. Para obter mais informações sobre a configuração da CA, consulte Criando uma Autoridade de Certificação.

Ou

Criar uma CA usando a CLI do OCI. Use o comando oci certs-mgmt certificate create-certificate-issued-by-internal-ca e os parâmetros necessários para criar uma CA raiz. Para obter mais informações, consulte create-certificate-issued-by-internal-ca.

Formato do Comando:

oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id <compartment_OCID> --name <CA_display_name> --subject <CA_subject_information> --kms-key-id <Vault_encryption_key_OCID>

Exemplo de comando:

oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --name MyRootCA --subject file://subject.json --kms-key-id ocid1.key.oc1.iad.abcxxxxx

Observação: O assunto é um tipo complexo cujo valor deve ser um JSON válido. O valor pode ser fornecido como uma string na linha de comando ou informado como um arquivo usando a sintaxe file://path/to/file.

Amostra de Arquivo subject.json.

subject.json
{
  "commonName": "MyRootCA"
}

Tarefa 3: Criar uma Solicitação de Assinatura de Certificado (CSR) usando OpenSSL

Crie uma CSR no servidor Nginx, que também criará uma chave privada no mesmo servidor. Esta é uma abordagem recomendada que nos fornece uma maneira padronizada de enviar a CA em sua chave pública, bem como algumas informações que identificam sua empresa e nome de domínio. A geração da CSR diretamente no servidor Nginx permite que você integre perfeitamente o certificado TLS/SSL depois que ele for emitido.

  1. Navegue até cd /etc/pki/tls/private/.

  2. Crie um arquivo chamado mywebsitecert.cnf para especificar parâmetros como SAN (nome alternativo do assunto) para os quais você está solicitando o certificado.

    Observação: A extensão SAN permite a anexação de identidades adicionais, como nomes de domínio ou endereços IP, ao assunto do certificado. O uso da extensão SAN é uma prática padrão para certificados SSL e está a caminho de substituir o uso do nome comum.

    Exemplo de Arquivo:

    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    C = IN
    ST = Telangana
    L = Hyd
    O = OU
    CN = www.mywebsite.com
    
    [v3_req]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = mywebsite.com
    IP.1 = 1.2.3.4
    
    
  3. Use o comando a seguir para criar uma CSR.

    Você precisará fornecer o arquivo mywebsite.csr a uma CA para obter seu certificado SSL. Eles usarão isso para gerar o certificado SSL para seu domínio. Ele usa a configuração já fornecida por meio do arquivo mywebsitecert.cnf.

    Mantenha o arquivo private.key seguro porque ele é usado para decriptografar dados criptografados com a chave pública correspondente.

    openssl req -out mywebsite.csr -newkey rsa:4096 -nodes -keyout private.key -config mywebsitecert.cnf
    

Tarefa 4: Criar um Certificado usando a CA

Para criar um novo certificado usando a CLI do OCI, você precisará do .pem do certificado a ser instalado no servidor Nginx.

  1. Converta o formato do arquivo csr para o formato .pem.

    openssl req -inform DER -in mywebsite.csr -out mywebsite.pem
    
  2. Execute o comando a seguir para criar um certificado.

    Formato do Comando:

    oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id  <compartment_OCID>  --csr-pem <csr_pem> --issuer-certificate-authority-id <CA_OCID> --name <Certificate-name>
    

    Exemplo de comando:

    oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --csr-pem mywebsite.pem --issuer-certificate-authority-id ocid1.certificateauthority.oc1.iad.aaaxxxx
    --name mywebsite.com
    

Tarefa 5: Fazer Download do Certificado e da Cadeia de Certificados

Os arquivos de certificado pem podem ser obtidos diretamente na Console do OCI, navegar até Identidade e Segurança, Certificados, Certificado, Exibir Conteúdo e fazer download do conteúdo de certificate-pem e certificate-chain-pem.

Crie um único arquivo combinando o conteúdo de ambos os arquivos, certificate-pem na parte superior e certificate-chain-pem na parte inferior do arquivo. Você pode nomeá-lo como ca_certificate.pem.

Ou

Você também pode extrair o certificado da CLI do OCI usando o comando a seguir.

Formato do Comando:

oci certificates certificate-bundle get --certificate-id <Certificate_OCID> > certificate.crt

Observação: Copie o OCID (Oracle Cloud Identifier) do certificado.

Tarefa 6: Instalar e configurar o servidor Nginx com o certificado

  1. Instale o Nginx em uma instância de computação. Para obter mais informações, consulte Instalar Nginx.

  2. Abra um navegador da Web e acesse a página da Web usando https://your-server-ip. Verifique se há avisos de segurança ou erros que possam ser exibidos pelo navegador.

    Imagem

    Ele exibe um aviso de segurança, portanto, precisamos instalar o certificado e modificar o arquivo conf no servidor Nginx.

  3. Copie os arquivos certificate.pem e ca_certificate.pem baixados da Console do OCI ou da CLI do OCI para o servidor Nginx.

  4. Configure seu servidor Nginx editando seu arquivo de configuração, localizado em /etc/nginx/conf.d.

    Imagem

  5. Reinicie o servidor Nginx.

Tarefa 7: Testar se o HTTPS está funcionando

Colocamos o certificado CA (ca_certificate.pem) na pasta de autoridade de certificação raiz confiável na máquina local, armazenamento de certificados em nossas máquinas clientes usadas para acessar este site. Isso é feito porque as CAs criadas pelos Certificados do OCI são CAs privadas e, portanto, não são confiáveis pelos navegadores. Portanto, precisamos adicionar a CA raiz e a CA intermediária (se usadas) no Armazenamento Raiz Confiável ou no Armazenamento Intermediário em todas as máquinas locais que tentam acessar o site.

Abra um navegador da Web e acesse a página da Web usando https://your-server-ip. Agora você deve observar que a página web está sendo veiculada com um certificado TLS válido, e quaisquer avisos de segurança ou erros encontrados anteriormente devem ser resolvidos.

Imagem

Imagem

Ao seguir essas tarefas, você garante que seu servidor Nginx esteja configurado corretamente com o certificado CA interno e que os clientes possam acessar a página da Web com segurança por HTTPS.

Confirmação

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.