Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
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
- Einrichtung, Erstellung und Installation von Zertifikaten durch die interne Certificate Authority auf dem Apache-Webserver.
Voraussetzungen
-
OCI-Benutzer müssen über die erforderlichen Policys für Zertifikate und OCI Compute verfügen, um die Ressourcen zu verwalten. Eine Policy-Referenz aller Services finden Sie in der Policy-Referenz.
-
Ein RSA-Schlüssel zum Erstellen der CA und der Verfügbarkeit einer Compute-Instanz, die als Webserver angegeben ist. Weitere Informationen finden Sie unter Vault-Masterverschlüsselungsschlüssel erstellen.
Hinweis:
Aufgaben wie das Erstellen einer Certificate Authority, das Generieren von Zertifikaten, das Verwalten von OCI-IAM-Policys usw. können mit der OCI-Konsole ausgeführt werden. In diesem Tutorial werden jedoch CLI-Befehle verwendet.
OCI-Administratoren müssen die Aufgaben 1 bis 3 ausführen, und Serveradministratoren müssen die Aufgaben 4 bis 9 ausführen.
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
-
Ändern Sie das Verzeichnis.
cd /etc/pki/tls/private/
-
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
-
Erstellen Sie CSR mit dem folgenden Befehl.
openssl req -out example.csr -newkey rsa:2048 -nodes -keyout example.key -config examplecert.cnf
-
(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
-
Erfassen Sie den Inhalt der Datei
example.csr
mit dem folgenden Befehl in einer Variablenexamplecsr
.examplecsr=$(cat example.csr)
-
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
-
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. -
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>
-
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
-
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. -
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
-
Curl von Host: Verwenden Sie den curl-Befehl vom Host, auf dem der Apache-Webserver ausgeführt wird, um die Verbindung zu testen. Sie erhalten eine Fehlermeldung, die URL konnte die Legitimität des Servers nicht überprüfen.
-
Curl von einem Laptop: Verwenden Sie curl von einem Laptop oder einem anderen Computer aus, um die Verbindung zum Apache-Webserver zu prüfen. Ersetzen Sie die IP-Adresse oder den Hostnamen durch die tatsächliche IP-Adresse oder den Hostnamen Ihres Servers. Sie erhalten den gleichen Fehler curl konnte die Legitimität des Servers nicht überprüfen.
-
Webbrowser: Öffnen Sie einen Webbrowser auf Ihrem Laptop und greifen Sie mit
https://your-server-ip
auf die Webseite zu. Prüfen Sie auf Sicherheitswarnungen oder Fehler, die vom Browser angezeigt werden können.
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.
-
Zertifikatskette installieren: Installieren Sie die zuvor heruntergeladene Zertifikatskette in den vertrauenswürdigen Root-Autoritäten auf dem Clientrechner. Dieser Schritt ist entscheidend, damit der Client das vom Apache-Webserver bereitgestellte Zertifikat erkennt und ihm vertraut.
-
Greifen Sie mit einem gültigen TLS-Zertifikat auf die Webseite zu: Nach der Installation der Zertifikatskette besuchen Sie die Webseite mit dem Webbrowser erneut. Beachten Sie jetzt, dass die Webseite mit einem gültigen TLS-Zertifikat bedient wird. Alle zuvor aufgetretenen Sicherheitswarnungen oder Fehler sollten behoben werden.
Mit diesen Schritten stellen Sie sicher, dass Ihr Apache-Webserver ordnungsgemäß mit dem internen CA-Zertifikat konfiguriert ist und Clients über HTTPS sicher auf die Webseite zugreifen können.
Verwandte Links
Danksagungen
- Autor - Chaitanya Chintala (Cloud Security Advisor)
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.
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.