Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Utilisation des certificats OCI pour la configuration, la création et l'installation de certificats CA internes sur le serveur Web Apache
Introduction
Dans le monde en constante évolution du cloud computing et de la sécurité numérique, le besoin de solutions robustes et flexibles pour gérer les certificats numériques n'a jamais été aussi critique. Oracle Cloud Infrastructure (OCI) Certificate Service apparaît comme un outil puissant et fiable conçu pour rationaliser la tâche complexe de gestion du cycle de vie des certificats dans l'écosystème Oracle Cloud. OCI Certificates est un service permettant de créer et de gérer des certificats TLS (Transport Layer Security). Ce service gratuit permet aux entreprises de créer des hiérarchies d'autorités de certification privées et des certificats TLS, qui peuvent être déployés et renouvelés automatiquement dans la location client, intégrés aux services OCI tels qu'OCI Load Balancer, OCI API Gateway, Web Application Firewall et autres.
Dans ce tutoriel, nous allons étudier l'utilisation d'OCI Certificates Service en tant que solution de gestion des certificats d'entreprise. Nous nous pencherons sur le processus de création d'une autorité de certification interne par les administrateurs et guiderons les administrateurs de serveur sur la génération de demandes de signature de certificat (CSR) pour leurs serveurs Web Apache. En outre, nous aborderons les étapes de création de certificats à l'aide de l'autorité de certification interne et expliquerons comment installer ces certificats sur les serveurs Web Apache.
Un administrateur disposant des privilèges nécessaires créera une autorité de certification pour émettre des certificats internes pour les serveurs Web internes. En outre, l'administrateur crée un groupe dynamique et configure des stratégies pour accorder à ce groupe dynamique l'accès au service OCI Certificates. En ajoutant une instance au groupe dynamique et en appliquant les stratégies nécessaires, une application exécutée sur cette instance peut accéder au service OCI Certificates sans avoir besoin d'informations d'identification utilisateur ou de fichier de configuration.
Les administrateurs partagent les détails de compartiment et les informations d'identification de l'autorité de certification, en particulier l'OCID (Oracle Cloud Identifier) avec les administrateurs de serveur. L'OCID fonctionne en tant qu'identificateur unique de l'autorité de certification. Avec ces informations, les administrateurs de serveur peuvent procéder à l'installation de l'interface de ligne de commande (CLI) Oracle Cloud Infrastructure sur leurs systèmes. Une fois installés, les administrateurs de serveur utilisent l'interface de ligne de commande OCI pour demander des certificats à l'autorité de certification créée précédemment par les administrateurs. Cette approche systématique garantit l'identification correcte de l'autorité de certification, ce qui facilite l'émission sécurisée et efficace de certificats dans l'environnement Oracle Cloud Infrastructure.
Objectifs
- Configuration, création et installation de certificats sur le serveur Web Apache par une autorité de certification interne.
Prérequis
-
L'utilisateur OCI doit disposer des stratégies requises pour les certificats et OCI Compute pour gérer les ressources. Pour obtenir la référence de stratégie de tous les services, reportez-vous à Référence de stratégie.
-
Clé RSA permettant de créer l'autorité de certification et la disponibilité d'une instance de calcul désignée comme serveur Web. Pour plus d'informations, reportez-vous à Création d'une clé de cryptage maître de coffre.
Remarque :
Vous pouvez effectuer des tâches telles que la création d'une autorité de certification, la génération de certificats, la gestion des stratégies OCI IAM, etc. à l'aide de la console OCI. Toutefois, dans ce tutoriel, les commandes de la CLI sont utilisées.
Les administrateurs OCI doivent effectuer les tâches 1 à 3 et les administrateurs de serveur doivent effectuer les tâches 4 à 9.
Tâche 1 : créer une autorité de certification
Créez une autorité de certification à l'aide des commandes suivantes, reportez-vous à la section Root Certificate Authority.
Format de commande:
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>
Remarque : l'objet est un type complexe dont la valeur doit être un format JSON valide. La valeur peut être fournie sous forme de chaîne sur la ligne de commande ou transmise sous forme de fichier à l'aide de la syntaxe
file://path/to/file
. Dans ce tutoriel, nous suivons l'approche par fichier.
Commande Sample :
Créez un exemple de fichier subject.json
avec les informations suivantes.
{
"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
Tâche 2 : créer un groupe dynamique
Créez un groupe dynamique à l'aide des commandes suivantes. Reportez-vous à la section Dynamic Group.
Format de commande:
oci iam dynamic-group create --compartment-id <Tenancy OCID> --description <description> --name <DG Name> --matching-rule <Matching Rule>
Commande Sample :
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'"
Tâche 3 : créer les stratégies nécessaires pour accorder à ce groupe dynamique l'accès au service OCI Certificates
Créez des stratégies OCI IAM à l'aide des commandes suivantes. Reportez-vous à Stratégies OCI IAM.
Format de commande:
oci iam policy create --compartment-id <compartment_id> --description <description> --name <name> --statements file://statements.json
Commande Sample :
Créez un fichier statements.json
avec les informations suivantes.
[
"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
Tâche 4 : installation de l'interface de ligne de commande OCI sur une instance de calcul (serveur Web Apache)
Installation et configuration de l'interface de ligne de commande OCI
Après vous être connecté à l'instance de calcul, exécutez les commandes suivantes pour installer et vérifier les packages de l'interface de ligne de commande Python et OCI sur l'instance Linux.
sudo dnf -y install oraclelinux-developer-release-el8
sudo dnf install python36-oci-cli
Tâche 5 : création d'une demande de signature de certificat à l'aide de OpenSSL sur le serveur Web Apache
-
Modifiez le répertoire.
cd /etc/pki/tls/private/
-
Créez un fichier
examplecert.cnf
avec les informations suivantes pour indiquer les paramètres de certificat avec le nom alternatif de sujet (SAN).Remarque : l'extension SAN permet d'attacher des identités supplémentaires, telles que des noms de domaine ou des adresses IP, au certificat subject.The. L'utilisation de l'extension SAN est une pratique standard pour les certificats SSL. Elle est en passe de remplacer l'utilisation du nom commun.
[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
-
Créez une CSR à l'aide de la commande suivante.
openssl req -out example.csr -newkey rsa:2048 -nodes -keyout example.key -config examplecert.cnf
-
(Facultatif) Vérifiez la CSR à l'aide de la commande suivante.
openssl req -noout -text -in example.csr
Tâche 6 : créer un certificat à l'aide de l'autorité de certification créée par l'administrateur OCI
-
Capturez le contenu du fichier
example.csr
dans une variableexamplecsr
à l'aide de la commande suivante.examplecsr=$(cat example.csr)
-
Créez un certificat géré en externe, émis par l'AC interne.
Format de commande:
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>
Commande Sample :
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
Remarque : copiez l'OCID du certificat créé.
Tâche 7 : télécharger le certificat et la chaîne de certificat
Remarque : exécutez les commandes suivantes en tant qu'utilisateur root.
Commande permettant de télécharger certificate and certificate chain.
Format de commande:
oci certificates certificate-bundle get --certificate-id <Certificate_OCID>
Exemple de commande - Certificat :
oci certificates certificate-bundle get --certificate-id ocid1.certificate.oc1.iad.abcdefghijbcdefghijk --raw-output --query 'data."certificate-pem"' > certificate.crt --auth instance_principal
Exemple de commande - 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
Tâche 8 : installation et configuration du serveur Web Apache à l'aide du certificat
-
Installez le package httpd, le module complémentaire HTTPS pour Apache et ses dépendances.
sudo dnf install httpd sudo dnf install mod_ssl
Il est recommandé de sécuriser toutes les communications entre un navigateur Web et un serveur Apache à l'aide de HTTPS avec un certificat TLS généré précédemment.
Pour modifier le chemin racine de votre serveur Web, ne modifiez pas directement le fichier
/etc/httpd/conf/httpd.conf
. A la place, comme méthode préférée, créez un fichier de configuration propre au site dans le répertoire/etc/httpd/conf.d
. Dans l'exemple suivant, le fichier/etc/httpd/conf.d/example.com.conf
est créé pour contenir les configurations des hôtes virtuels. -
Créez des hôtes virtuels en ajoutant les informations suivantes dans
/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>
-
Créez le dossier racine du document. Le dossier racine héberge les pages Web qu'Apache fournira aux navigateurs.
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
-
Redémarrez le service Apache pour charger la nouvelle configuration.
sudo systemctl restart httpd
Remarque : commentez la ligne Ecoutez 443 https dans le fichier
/etc/httpd/conf.d/ssl.conf
si vous obtenez l'erreur "Impossible de définir plusieurs processus d'écoute sur le même IP:port". -
Configuration du pare-feu. Ces commandes activent le port de pare-feu 443 pour le service HTTPS Apache et recharge le service de pare-feu par défaut.
sudo firewall-cmd --add-service=https --permanent sudo firewall-cmd --reload
Remarque : assurez-vous que la liste de sécurité associée au sous-réseau et les groupes de sécurité associés à la carte d'interface réseau virtuelle autorisent le trafic sur le port 443.
Tâche 9 : tester la page Web
-
Curl from Host : utilisez la commande curl de l'hôte sur lequel le serveur Web Apache est exécuté pour tester la connexion. Vous obtiendrez une erreur curl failed to verify the légitiacy of the server.
-
Curl à partir d'un ordinateur portable : à partir d'un ordinateur portable ou d'une autre machine, utilisez curl pour vérifier la connexion au serveur Web Apache. Remplacez l'adresse IP ou le nom d'hôte par celui de votre serveur. Vous obtiendrez la même erreur curl failed to verify the légitiacy of the server.
-
Navigateur Web : ouvrez un navigateur Web sur votre ordinateur portable et accédez à la page Web à l'aide de
https://your-server-ip
. Recherchez les avertissements ou erreurs de sécurité susceptibles d'être affichés par le navigateur.
Toutes les erreurs proviennent du fait que le certificat installé sur le serveur Web n'est pas émis par une autorité de certification publique et que le certificat racine de l'autorité de certification interne n'est pas présent dans le magasin de certificats.
-
Installer la chaîne de certificats : installez la chaîne de certificats précédemment téléchargée dans les autorités de confiance racine sur l'ordinateur client. Cette étape est cruciale pour que le client reconnaisse et sécurise le certificat fourni par votre serveur Web Apache.
-
Accédez à la page Web avec un certificat TLS valide : Après avoir installé la chaîne de certificats, revenez sur la page Web à l'aide du navigateur Web. Vous devez maintenant observer que la page Web reçoit un certificat TLS valide et que tous les avertissements ou erreurs de sécurité rencontrés précédemment doivent être résolus.
En suivant ces étapes, vous assurez que votre serveur Web Apache est correctement configuré avec le certificat CA interne et que les clients peuvent accéder à la page Web en toute sécurité via HTTPS.
Liens connexes
Remerciements
- Auteur - Chaitanya Chintala (Cloud Security Advisor)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez 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.