Hinweis:

OCI-Zertifikate für die Einrichtung, Erstellung und Installation interner CA-Zertifikate auf dem Apache-Webserver verwenden

Einführung

In der sich schnell entwickelnden Welt des Cloud-Computing und der digitalen Sicherheit war der Bedarf an robusten und flexiblen Lösungen zur Verwaltung digitaler Zertifikate noch nie kritischer. Oracle Cloud Infrastructure (OCI) Certificate Service ist ein leistungsstarkes und zuverlässiges Tool zur Optimierung der komplexen Aufgabe des Zertifikatslebenszyklusmanagements im Oracle Cloud-Ökosystem. OCI Certificates ist ein Service zum Erstellen und Verwalten von TLS-(Transport Layer Security-)Zertifikaten. Mit diesem kostenlosen Service können Unternehmen private Certificate Authority-(CA-)Hierarchien und TLS-Zertifikate erstellen, die automatisch im Kundenmandanten bereitgestellt und erneuert werden können und in OCI-Services wie OCI Load Balancer, OCI API Gateway, Web Application Firewall und andere integriert sind.

In diesem Tutorial wird die Verwendung des OCI Certificates Service als Enterprise Certificate Management-Lösung erläutert. Im Folgenden wird beschrieben, wie Administratoren eine interne CA erstellen und Serveradministratoren beim Generieren von Certificate Signing Requests (CSRs) für ihre Apache-Webserver unterstützen. Darüber hinaus werden die Schritte zum Erstellen von Zertifikaten mit der internen CA behandelt und gezeigt, wie diese Zertifikate auf den Apache-Webservern installiert werden.

Ein Administrator mit den erforderlichen Berechtigungen erstellt eine CA, um interne Zertifikate für interne Webserver auszustellen. Darüber hinaus erstellt der Administrator eine dynamische Gruppe und richtet Policys ein, um dieser dynamischen Gruppe Zugriff auf den OCI Certificates-Service zu erteilen. Durch Hinzufügen einer Instanz zur dynamischen Gruppe und Anwenden der erforderlichen Policys kann eine auf dieser Instanz ausgeführte Anwendung ohne Benutzerzugangsdaten oder Konfigurationsdatei auf den OCI Certificates-Service zugreifen.

Administratoren teilen Compartment-Details und Certificate Authority-ID-Informationen, insbesondere die Oracle Cloud-ID (OCID) mit Serveradministratoren. Die OCID fungiert als eindeutige ID für die Certificate Authority. Mit diesen Informationen können Serveradministratoren mit der Installation der Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI) auf ihren Systemen fortfahren. Nach der Installation verwenden Serveradministratoren die OCI-CLI, um Zertifikate von der Certificate Authority anzufordern, die zuvor von den Administratoren erstellt wurde. Dieser systematische Ansatz gewährleistet die ordnungsgemäße Identifizierung der Certificate Authority und erleichtert die sichere und effiziente Ausstellung von Zertifikaten innerhalb der Oracle Cloud Infrastructure-Umgebung.

Ziele

Voraussetzungen

Hinweis:

Aufgabe 1: Certificate Authority erstellen

Erstellen Sie Certificate Authority mit den folgenden Befehlen. Informationen hierzu finden Sie unter Root Certificate Authority.

Befehlsformat:

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>

Hinweis: Der Betreff ist ein komplexer Typ, dessen Wert ein gültiges JSON-Format aufweisen muss. Der Wert kann als Zeichenfolge in der Befehlszeile angegeben oder mit der Syntax file://path/to/file als Datei übergeben werden. In diesem Tutorial folgen wir dem Dateiansatz.

Beispielbefehl:

Erstellen Sie eine Beispieldatei subject.json mit den folgenden Informationen.

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

Aufgabe 2: Dynamische Gruppe erstellen

Erstellen Sie eine dynamische Gruppe mit den folgenden Befehlen. Informationen hierzu finden Sie unter Dynamische Gruppe.

Befehlsformat:

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

Beispielbefehl:

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

Aufgabe 3: Erstellen Sie die erforderlichen Policys, um dieser dynamischen Gruppe Zugriff auf den OCI Certificates-Service zu erteilen

Erstellen Sie OCI-IAM-Policys mit den folgenden Befehlen. Informationen hierzu finden Sie unter OCI-IAM-Policys.

Befehlsformat:

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

Beispielbefehl:

Erstellen Sie eine Datei statements.json mit den folgenden Informationen.

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

Aufgabe 4: OCI-CLI auf Compute-Instanz (Apache-Webserver) installieren

Installieren und konfigurieren Sie die OCI-CLI.

Nachdem Sie eine Verbindung zur Compute-Instanz hergestellt haben, führen Sie die folgenden Befehle aus, um Python- und OCI-CLI-Packages auf einer Linux-Instanz zu installieren und zu prüfen.

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

Aufgabe 5: Certificate Signing Request (CSR) mit OpenSSL im Apache-Webserver erstellen

  1. Ändern Sie das Verzeichnis.

    cd /etc/pki/tls/private/
    
  2. Erstellen Sie eine Datei examplecert.cnf mit den folgenden Informationen, um die Zertifikatsparameter mit Subject Alternative Name (SAN) anzugeben.

    Hinweis: Die SAN-Erweiterung ermöglicht das Anhängen zusätzlicher Identitäten, wie Domainnamen oder IP-Adressen, an das Zertifikat. subject.The Die Verwendung der SAN-Erweiterung ist Standardpraxis für SSL-Zertifikate, und es ist auf dem Weg, die Verwendung des allgemeinen Namens zu ersetzen.

    [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. Erstellen Sie CSR mit dem folgenden Befehl.

    openssl req -out example.csr -newkey rsa:2048 -nodes -keyout example.key -config examplecert.cnf
    
  4. (Optional) Prüfen Sie die CSR mit dem folgenden Befehl.

    openssl req -noout -text -in example.csr
    

Aufgabe 6: Zertifikat mit der vom OCI-Administrator erstellten CA erstellen

  1. Erfassen Sie den Inhalt der Datei example.csr mit dem folgenden Befehl in einer Variablen examplecsr.

    examplecsr=$(cat example.csr)
    
  2. Erstellen Sie Zertifikat, das extern verwaltet wird und von interner CA ausgestellt wird.

    Befehlsformat:

    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>
    

    Beispielbefehl:

    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
    

Hinweis: Kopieren Sie die OCID des erstellten Zertifikats.

Aufgabe 7: Zertifikat und Zertifikatskette herunterladen

Hinweis: Führen Sie die folgenden Befehle als Root-Benutzer aus.

Befehl zum Herunterladen der Zertifikat- und Zertifikatskette.

Befehlsformat:

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

Beispielbefehl - Zertifikat:

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

Beispielbefehl - Zertifikatskette:

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

Aufgabe 8: Apache-Webserver mit dem Zertifikat installieren und konfigurieren

  1. Installieren Sie das httpd-Paket, das HTTPS-Add-on für Apache und seine Abhängigkeiten.

    sudo dnf install httpd
    sudo dnf install mod_ssl
    

    Als Best Practice wird die gesamte Kommunikation zwischen einem Webbrowser und dem Apache-Server gesichert, indem HTTPS mit einem zuvor generierten TLS-Zertifikat verwendet wird.

    Um den Root-Pfad für Ihren Webserver zu ändern, bearbeiten Sie die Datei /etc/httpd/conf/httpd.conf nicht direkt. Erstellen Sie stattdessen als bevorzugte Methode eine site-spezifische Konfigurationsdatei im Verzeichnis /etc/httpd/conf.d. Im folgenden Beispiel wird die Datei /etc/httpd/conf.d/example.com.conf so erstellt, dass sie Konfigurationen für virtuelle Hosts enthält.

  2. Erstellen Sie virtuelle Hosts, indem Sie die folgenden Informationen in /etc/httpd/conf.d/example.com.conf hinzufügen.

    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. Erstellen Sie den Stammordner des Dokuments. Der Stammordner hostet die Webseiten, die Apache Browsern zur Verfügung stellt.

    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. Starten Sie den Apache-Service neu, um die neue Konfiguration zu laden.

    sudo systemctl restart httpd
    

    Hinweis: Kommentieren Sie die Zeile Listen 443 https in der Datei /etc/httpd/conf.d/ssl.conf, wenn Sie den Fehler "Kann nicht mehrere Listener auf demselben IP:port definieren" erhalten.

  5. Konfigurieren Sie die Firewall. Diese Befehle aktivieren den Firewallport 443 für den Apache HTTPS-Service und laden den Standardfirewallservice neu.

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

    Hinweis: Stellen Sie sicher, dass die mit dem Subnetz verknüpfte Sicherheitsliste und die mit der VNIC verknüpften Sicherheitsgruppen Traffic auf Port 443 zulassen.

Aufgabe 9: Webseite testen

Alle Fehler ergeben sich daraus, dass das auf dem Webserver installierte Zertifikat nicht von einer öffentlichen Certificate Authority ausgegeben wird und das Root-Zertifikat der internen CA nicht im Zertifikatspeicher vorhanden ist.

Danksagungen

Weitere Lernressourcen

Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.