Observação:

Usar OCI Certificates para Configuração, Criação e Instalação de CAs Internas de certificados no Servidor Web Apache

Introdução

No mundo em rápida evolução da computação em nuvem e da segurança digital, a necessidade de soluções robustas e flexíveis para gerenciar certificados digitais nunca foi tão crítica. O Oracle Cloud Infrastructure (OCI) Certificate Service surge como uma ferramenta poderosa e confiável projetada para simplificar a complexa tarefa de gerenciamento do ciclo de vida do certificado dentro do ecossistema da Oracle Cloud. O OCI Certificates é um serviço para criação e gerenciamento de certificados TLS (Transport Layer Security). Esse serviço gratuito permite que as organizações criem hierarquias de Autoridades de Certificação (CA) privadas e certificados TLS, que podem ser implantados e renovados automaticamente na tenancy do cliente, integrados a serviços do OCI, como OCI Load Balancer, OCI API Gateway, Web Application Firewall e Outros.

Neste tutorial, exploraremos a utilização do OCI Certificates Service como uma solução de gerenciamento de certificados empresariais. Vamos nos aprofundar no processo de criação de uma CA interna por administradores e orientar os administradores do servidor na geração de Solicitações de Assinatura de Certificado (CSRs) para seus Servidores Web Apache. Além disso, abordaremos as etapas envolvidas na criação de certificados usando a CA interna e demonstraremos como instalar esses certificados nos Servidores Web Apache.

Um administrador com os privilégios necessários criará uma CA para emitir certificados internos para servidores Web internos. Além disso, o administrador criará um grupo dinâmico e configurará políticas para conceder a esse grupo dinâmico acesso ao serviço OCI Certificates. Adicionando uma instância ao grupo dinâmico e aplicando as políticas necessárias, um aplicativo em execução nessa instância poderá acessar o serviço OCI Certificates sem a necessidade de credenciais do usuário ou um arquivo de configuração.

Os administradores compartilham detalhes do compartimento e informações de identificação da Autoridade de Certificação, especificamente o OCID (Oracle Cloud Identifier) com administradores de servidor. O OCID funciona como um identificador exclusivo da Autoridade de Certificação. Com essas informações, os administradores de servidor podem continuar a instalar a CLI (Interface de Linha de Comando) do OCI (Oracle Cloud Infrastructure) em seus sistemas. Depois de instalados, os administradores do servidor utilizam a CLI do OCI para solicitar certificados da Autoridade de Certificação criados anteriormente pelos administradores. Essa abordagem sistemática garante a identificação adequada da Autoridade de Certificação, facilitando a emissão segura e eficiente de certificados no ambiente do Oracle Cloud Infrastructure.

Objetivos

Pré-requisitos

Observação:

Tarefa 1: Criar Autoridade de Certificação

Crie uma Autoridade de Certificação usando os comandos a seguir. Consulte Root Certificate Authority.

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>

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. Neste tutorial, estamos seguindo a abordagem de arquivo.

Exemplo de Comando:

Crie um arquivo de amostra subject.json com as informações a seguir.

{
  "commonName": "INTERNAL-ROOTCA"
}
oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id ocid1.compartment.oc1..aaaaaaaabcdefghij12abcdefgh78abcde --name INTERNAL-ROOTCA --subject file://subject.json --kms-key-id ocid1.key.oc1.iad.abcdefghijklm.abcdefghijklmnop12abcdiklmnop56abcdef

Tarefa 2: Criar grupo Dinâmico

Criar grupo dinâmico usando os comandos a seguir. Consulte Grupo dinâmico.

Formato do Comando:

oci iam dynamic-group create --compartment-id <Tenancy OCID> --description <description> --name <DG Name> --matching-rule <Matching Rule>

Exemplo de Comando:

oci iam dynamic-group create --compartment-id ocid1.tenancy.oc1..aaaaaaaabbbbcdefgh12abcdabcdefghijkl --description Web-servers --name Web-servers-DG --matching-rule "instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaabcdefghij12abcde6abcdefghij78abcde'"

Tarefa 3: Criar políticas necessárias para conceder a esse grupo dinâmico acesso ao serviço OCI Certificates

Crie políticas do OCI IAM usando os comandos a seguir. Consulte Políticas do OCI IAM.

Formato do Comando:

oci iam policy create --compartment-id <compartment_id> --description <description> --name <name> --statements file://statements.json

Exemplo de Comando:

Crie um arquivo statements.json com as informações a seguir.

[
"Allow dynamic-group Web-servers-DG to manage leaf-certificate-family in compartment chaitanyachintala",
"Allow dynamic-group Web-servers-DG to use certificate-authority-family in compartment chaitanyachintala"
]
oci iam policy create --compartment-id ocid1.compartment.oc1..aaaaaaaabcdefgh56abcdefghij78abcde --description Create-Certficate --name Cert-policies --statements file://statements.json

Tarefa 4: Instalar a CLI do OCI na Instância de Computação (Servidor Web Apache)

Instalar e configurar a CLI (Command Line Interface) do OCI.

Depois de estabelecer conexão com a instância de computação, execute os comandos a seguir para instalar e verificar os pacotes Python e CLI do OCI na instância Linux.

sudo dnf -y install oraclelinux-developer-release-el8
sudo dnf install python36-oci-cli

Tarefa 5: Criar uma Solicitação de Assinatura de Certificado (CSR) usando OpenSSL no Servidor Web Apache

  1. Altere o diretório.

    cd /etc/pki/tls/private/
    
  2. Crie um arquivo examplecert.cnf com as informações a seguir para especificar os parâmetros do certificado com o Nome Alternativo do Assunto (SAN).

    Observação: A extensão SAN permite a anexação de identidades adicionais, como nomes de domínio ou endereços IP, ao certificado subject.The. 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.

    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    C = US
    ST = Texas
    L = Texas
    O = Elpmaxe
    CN = www.example.com
    
    [v3_req]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = example.com
    IP.1 = 1.1.1.1
    
  3. Crie o CSR usando o comando a seguir.

    openssl req -out example.csr -newkey rsa:2048 -nodes -keyout example.key -config examplecert.cnf
    
  4. (Opcionalmente) Verifique o CSR usando o comando a seguir.

    openssl req -noout -text -in example.csr
    

Tarefa 6: Criar um certificado usando a CA criada pelo administrador do OCI

  1. Capture o conteúdo do arquivo example.csr em uma variável examplecsr usando o comando a seguir.

    examplecsr=$(cat example.csr)
    
  2. Criar certificado gerenciado externamente emitido por CA interna.

    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..aaaaaaaabcdefghhij78abcde --csr-pem "$examplecsr" --issuer-certificate-authority-id ocid1.certificateauthority.oc1.iad.abcdefghi56abcdefghijklmnop --name example.com --auth instance_principal
    

Observação: Copie o OCID do certificado criado.

Tarefa 7: Fazer download do certificado e da cadeia de certificados

Observação: execute os seguintes comandos como usuário raiz.

Comando para fazer download de cadeia de certificados e certificados.

Formato do Comando:

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

Exemplo de Comando - Certificado:

oci certificates certificate-bundle get --certificate-id ocid1.certificate.oc1.iad.abcdefghijbcdefghijk --raw-output --query 'data."certificate-pem"' > certificate.crt --auth instance_principal

Comando de Amostra - Certificate-Chain:

oci certificates certificate-bundle get --certificate-id ocid1.certificate.oc1.iad.abcdefghip56abcdefghijk --raw-output --query 'data."cert-chain-pem"' > certificate-chain.pem --auth instance_principal

Tarefa 8: Instalar e configurar o Servidor Web Apache com o certificado

  1. Instale o pacote httpd, o complemento HTTPS para o Apache e suas dependências.

    sudo dnf install httpd
    sudo dnf install mod_ssl
    

    Como prática recomendada, proteja todas as comunicações entre um navegador da Web e um servidor Apache usando HTTPS com um certificado TLS gerado anteriormente.

    Para alterar o caminho raiz do servidor Web, não edite o arquivo /etc/httpd/conf/httpd.conf diretamente. Em vez disso, como método preferencial, crie um arquivo de configuração específico do site no diretório /etc/httpd/conf.d. No exemplo a seguir, o arquivo /etc/httpd/conf.d/example.com.conf é criado para conter configurações para hosts virtuais.

  2. Crie hosts virtuais adicionando as informações a seguir em /etc/httpd/conf.d/example.com.conf.

    Listen *:443
    
    <VirtualHost *:443>
      ServerName example.com
      ServerAlias www.example.com
      SSLEngine on
      SSLCertificateFile /etc/pki/tls/private/certificate.crt
      SSLCertificateKeyFile /etc/pki/tls/private/example.key
      DocumentRoot /var/www/example.com/html/
      ErrorLog /var/log/httpd/example.com_error.log
      CustomLog /var/log/httpd/example.com_access.log combined
    </VirtualHost>
    
  3. Crie a pasta raiz de documentos. A pasta raiz hospeda as páginas da Web que o Apache fornecerá aos navegadores.

    sudo mkdir -p /var/www/example.com/html
    sudo echo "example.com" > /var/www/example.com/html/index.html
    sudo chown -R apache:apache /var/www/example.com/html
    
  4. Reinicie o serviço Apache para carregar a nova configuração.

    sudo systemctl restart httpd
    

    Observação: Comente a linha Ouça 443 https no arquivo /etc/httpd/conf.d/ssl.conf se estiver obtendo o erro "Não é possível definir vários Listeners no mesmo IP:porta".

  5. Configurar o firewall. Esses comandos ativam a porta de firewall 443 para o serviço Apache HTTPS e recarregam o serviço de firewall padrão.

    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    

    Observação: Certifique-se de que a Lista de Segurança associada à sub-rede e aos Grupos de Segurança associados à VNIC permitam o tráfego na porta 443.

Tarefa 9: Testar a página da Web

Todos os erros resultam do fato de que o certificado instalado no servidor Web não é emitido por uma Autoridade de Certificação pública e o certificado raiz da CA interna não está presente no armazenamento de certificados.

Agradecimentos

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.