Remarques :

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

Prérequis

Remarque :

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

  1. Modifiez le répertoire.

    cd /etc/pki/tls/private/
    
  2. 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
    
  3. 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
    
  4. (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

  1. Capturez le contenu du fichier example.csr dans une variable examplecsr à l'aide de la commande suivante.

    examplecsr=$(cat example.csr)
    
  2. 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

  1. 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.

  2. 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>
    
  3. 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
    
  4. 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".

  5. 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

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.

Remerciements

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.