Nota

Usare i certificati OCI per l'impostazione, la creazione e l'installazione interne della CA dei certificati sul server Web Apache

Introduzione

Nel mondo in rapida evoluzione del cloud computing e della sicurezza digitale, la necessità di soluzioni solide e flessibili per gestire i certificati digitali non è mai stata così importante. Oracle Cloud Infrastructure (OCI) Certificate Service emerge come strumento potente e affidabile progettato per semplificare le complesse attività di gestione del ciclo di vita dei certificati nell'ecosistema Oracle Cloud. OCI Certificates è un servizio per la creazione e la gestione dei certificati TLS (Transport Layer Security). Questo servizio gratuito consente alle organizzazioni di creare gerarchie di autorità di certificazione (CA) private e certificati TLS, che possono essere distribuiti e rinnovati automaticamente nella tenancy del cliente, integrati con servizi OCI Load Balancer, OCI API Gateway, Web Application Firewall e altri.

In questa esercitazione verrà descritto l'utilizzo del servizio OCI Certificates come soluzione di gestione dei certificati aziendali. Analizzeremo il processo di creazione di una CA interna da parte degli amministratori e guideremo gli amministratori del server nella generazione delle richieste di firma dei certificati (CSR) per i loro server Web Apache. Inoltre, illustreremo i passaggi necessari per creare certificati utilizzando la CA interna e dimostreremo come installare questi certificati sui server Web Apache.

Un amministratore con i privilegi necessari creerà una CA per emettere certificati interni per i server Web interni. Inoltre, l'amministratore creerà un gruppo dinamico e imposterà i criteri per concedere a questo gruppo dinamico l'accesso al servizio OCI Certificates. Aggiungendo un'istanza al gruppo dinamico e applicando i criteri necessari, un'applicazione in esecuzione su tale istanza può accedere al servizio OCI Certificates senza la necessità di credenziali utente o di un file di configurazione.

Gli amministratori condividono i dettagli del compartimento e le informazioni di identificazione dell'autorità di certificazione, in particolare l'OCID (Oracle Cloud Identifier) con gli amministratori del server. OCID funge da identificativo univoco per l'autorità di certificazione. Con queste informazioni, gli amministratori del server possono procedere all'installazione dell'interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI) sui propri sistemi. Una volta installata, gli amministratori del server utilizzano l'interfaccia CLI OCI per richiedere i certificati all'autorità di certificazione creata in precedenza dagli amministratori. Questo approccio sistematico garantisce una corretta identificazione dell'autorità di certificazione, facilitando il rilascio sicuro ed efficiente dei certificati nell'ambiente Oracle Cloud Infrastructure.

Obiettivi

Prerequisiti

Nota:

Task 1: Crea autorità di certificazione

Creare un'autorità di certificazione utilizzando i comandi riportati di seguito. Vedere Root Certificate Authority.

Formato del 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>

Nota: l'oggetto è un tipo complesso il cui valore deve essere JSON valido. Il valore può essere fornito come stringa nella riga di comando o passato come file utilizzando la sintassi file://path/to/file. In questo tutorial stiamo seguendo l'approccio file.

Comando di esempio:

Creare un file di esempio subject.json con le seguenti informazioni.

{
  "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

Task 2: Crea gruppo dinamico

Creare un gruppo dinamico utilizzando i comandi riportati di seguito. Vedere Gruppo dinamico.

Formato del comando:

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

Comando di esempio:

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'"

Task 3: creare i criteri necessari per concedere a questo gruppo dinamico l'accesso al servizio OCI Certificates

Creare criteri IAM OCI utilizzando i comandi riportati di seguito. Vedere Criteri IAM OCI.

Formato del comando:

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

Comando di esempio:

Creare un file statements.json con le seguenti informazioni.

[
"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

Task 4: installare l'interfaccia CLI OCI nell'istanza di computazione (server Web Apache)

Installare e configurare l'interfaccia CLI (Command Line Interface) OCI.

Dopo aver eseguito la connessione all'istanza di computazione, eseguire i comandi riportati di seguito per installare e verificare i package Python e OCI CLI nell'istanza Linux.

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

Task 5: Creare una richiesta di firma certificato (CSR, Certificate Signing Request) utilizzando OpenSSL nel server Web Apache

  1. Modificare la directory.

    cd /etc/pki/tls/private/
    
  2. Creare un file examplecert.cnf con le seguenti informazioni per specificare i parametri del certificato con nome alternativo dell'oggetto (SAN).

    Nota: l'estensione SAN consente il collegamento di identità aggiuntive, ad esempio nomi di dominio o indirizzi IP, al certificato subject.The l'uso dell'estensione SAN è una prassi standard per i certificati SSL ed è in procinto di sostituire l'uso del nome comune.

    [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. Creare un CSR utilizzando il seguente comando.

    openssl req -out example.csr -newkey rsa:2048 -nodes -keyout example.key -config examplecert.cnf
    
  4. (Facoltativo) Verificare la richiesta di firma certificato utilizzando il seguente comando.

    openssl req -noout -text -in example.csr
    

Task 6: creare un certificato utilizzando la CA creata dall'amministratore OCI

  1. Acquisire i contenuti del file example.csr in una variabile examplecsr utilizzando il comando seguente.

    examplecsr=$(cat example.csr)
    
  2. Creare il certificato gestito esternamente dalla CA interna.

    Formato del 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>
    

    Comando di esempio:

    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
    

Nota: copiare l'OCID del certificato creato.

Task 7: Scaricare il certificato e la catena di certificati

Nota: eseguire i seguenti comandi come utente root.

Comando per scaricare certificato e catena di certificati.

Formato del comando:

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

Comando di esempio - Certificato:

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

Comando di esempio - Catena di certificati:

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

Task 8: installare e configurare il server Web Apache con il certificato

  1. Installare il pacchetto httpd, il componente aggiuntivo HTTPS per Apache e le relative dipendenze.

    sudo dnf install httpd
    sudo dnf install mod_ssl
    

    Come best practice, proteggere tutte le comunicazioni tra un browser Web e un server Apache utilizzando HTTPS con un certificato TLS generato in precedenza.

    Per modificare il percorso root del server Web, non modificare direttamente il file /etc/httpd/conf/httpd.conf. Creare invece, come metodo preferito, un file di configurazione specifico per il sito nella directory /etc/httpd/conf.d. Nell'esempio seguente, il file /etc/httpd/conf.d/example.com.conf viene creato per contenere configurazioni per gli host virtuali.

  2. Creare host virtuali aggiungendo le seguenti informazioni in /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. Creare la cartella radice del documento. La cartella radice ospita le pagine web che Apache fornirà ai browser.

    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. Riavviare il servizio Apache per caricare la nuova configurazione.

    sudo systemctl restart httpd
    

    Nota: commentare la riga Ascolta 443 https nel file /etc/httpd/conf.d/ssl.conf se si riceve l'errore "Impossibile definire più listener sullo stesso IP:porta".

  5. Configurare il firewall. Questi comandi abilitano la porta firewall 443 per il servizio HTTPS Apache e ricaricano il servizio firewall predefinito.

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

    Nota: assicurarsi che la lista di sicurezza associata alla subnet e i gruppi di sicurezza associati alla VNIC consentano il traffico sulla porta 443.

Task 9: Testare la pagina web

Tutti gli errori derivano dal fatto che il certificato installato sul Web server non è emesso da un'autorità di certificazione pubblica e il certificato radice della CA interna non è presente nell'area di memorizzazione dei certificati.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.