Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
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
- Configuração, criação e instalação de certificados internos da Autoridade de Certificação no Apache Web Server.
Pré-requisitos
-
O usuário do OCI deve ter as políticas necessárias para certificados e o OCI Compute para gerenciar os recursos. Para referência de política de todos os serviços, consulte Referência de Política.
-
Uma chave RSA para criar a CA e a disponibilidade de uma instância de computação designada como servidor Web. Para obter mais informações, consulte Criar uma chave de criptografia principal do vault.
Observação:
Tarefas como criar uma Autoridade de Certificação, gerar certificados, gerenciar políticas do OCI IAM e assim por diante podem ser executadas usando a Console do OCI. No entanto, neste tutorial, os comandos da CLI são usados.
Os administradores do OCI devem executar as Tarefas de 1 a 3 e os administradores do servidor devem executar as Tarefas de 4 a 9.
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
-
Altere o diretório.
cd /etc/pki/tls/private/
-
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
-
Crie o CSR usando o comando a seguir.
openssl req -out example.csr -newkey rsa:2048 -nodes -keyout example.key -config examplecert.cnf
-
(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
-
Capture o conteúdo do arquivo
example.csr
em uma variávelexamplecsr
usando o comando a seguir.examplecsr=$(cat example.csr)
-
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
-
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. -
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>
-
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
-
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". -
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
-
Curl from Host: Use o comando curl do host em que o Servidor Web Apache está sendo executado para testar a conexão. Você receberá um erro curl falhou ao verificar a legitimidade do servidor.
-
Curl de um Laptop: De um laptop ou outra máquina, use curl para verificar a conexão com o Servidor Web Apache. Substitua o endereço IP ou o nome do host pelo endereço IP ou pelo nome do host real do seu servidor. Você receberá o mesmo erro curl falhou ao verificar a legitimidade do servidor.
-
Navegador da Web: Abra um navegador da Web em seu laptop 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.
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.
-
Instalar a cadeia de certificados: Instale a cadeia de certificados baixada anteriormente nas autoridades raiz confiáveis na máquina cliente. Esta etapa é crucial para que o cliente reconheça e confie no certificado fornecido pelo servidor Web Apache.
-
Acesse a página da Web com um Certificado TLS válido: Depois de instalar a cadeia de certificados, volte a página da Web usando o navegador da Web. 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.
Ao seguir estas etapas, você garante que o Servidor Web Apache esteja configurado corretamente com o certificado de CA interno e que os clientes possam acessar a página da Web com segurança por HTTPS.
Links Relacionados
Agradecimentos
- Autor - Chaitanya Chintala (Cloud Security Advisor)
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.
Use OCI Certificates for Internal CA Setup, Creation, and Installation of certificates on Apache Web Server
F90568-01
January 2024
Copyright © 2024, Oracle and/or its affiliates.