Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
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
- Impostazione, creazione e installazione di certificati da parte dell'autorità di certificazione interna sul server Web Apache.
Prerequisiti
-
L'utente OCI deve disporre dei criteri necessari per i certificati e OCI Compute per gestire le risorse. Per il riferimento ai criteri di tutti i servizi, vedere Riferimento ai criteri.
-
Chiave RSA per creare la CA e la disponibilità di un'istanza di computazione designata come server Web. Per ulteriori informazioni, vedere Creare una chiave di cifratura master del vault.
Nota:
È possibile eseguire task quali la creazione di un'autorità di certificazione, la generazione di certificati, la gestione dei criteri IAM OCI e così via utilizzando OCI Console. Tuttavia, in questa esercitazione vengono utilizzati i comandi CLI.
Gli amministratori OCI devono eseguire i task da 1 a 3 e gli amministratori del server devono eseguire i task da 4 a 9.
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
-
Modificare la directory.
cd /etc/pki/tls/private/
-
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
-
Creare un CSR utilizzando il seguente comando.
openssl req -out example.csr -newkey rsa:2048 -nodes -keyout example.key -config examplecert.cnf
-
(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
-
Acquisire i contenuti del file
example.csr
in una variabileexamplecsr
utilizzando il comando seguente.examplecsr=$(cat example.csr)
-
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
-
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. -
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>
-
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
-
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". -
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
-
Curl dall'host: utilizzare il comando curl dall'host in cui è in esecuzione il server Web Apache per eseguire il test della connessione. Si riceverà un errore curl che non è riuscito a verificare la legittimità del server.
-
Curl da un laptop: da un laptop o da un altro computer, utilizzare curl per verificare la connessione al server Web Apache. Sostituire l'indirizzo IP o il nome host con quello effettivo o il nome host del server. Si riceverà lo stesso errore curl non è riuscito a verificare la legittimità del server.
-
Browser Web: aprire un browser Web sul laptop e accedere alla pagina Web utilizzando
https://your-server-ip
. Controllare eventuali avvisi o errori di sicurezza visualizzati dal browser.
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.
-
Installare la catena di certificati: installare la catena di certificati scaricata in precedenza nelle autorità di sicurezza root sul computer client. Questo passaggio è fondamentale affinché il client riconosca e consideri attendibile il certificato fornito dal server Web Apache.
-
Accedere alla pagina Web con un certificato TLS valido: dopo aver installato la catena di certificati, rivedere la pagina Web utilizzando il browser Web. È ora necessario osservare che la pagina Web viene fornita con un certificato TLS valido e che eventuali avvisi di sicurezza o errori riscontrati in precedenza devono essere risolti.
Seguendo questa procedura, è possibile assicurarsi che il server Web Apache sia configurato correttamente con il certificato CA interno e che i client possano accedere in modo sicuro alla pagina Web tramite HTTPS.
Collegamenti correlati
Conferme
- Autore - Chaitanya Chintala (Cloud Security Advisor)
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.
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.