GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> OpenVPN

So richten Sie eine Zertifizierungsstelle unter Ubuntu 22.04 ein und konfigurieren sie

Einführung

Eine Zertifizierungsstelle (CA) ist eine Einheit, die für die Ausstellung digitaler Zertifikate zur Überprüfung von Identitäten im Internet verantwortlich ist. Obwohl öffentliche Zertifizierungsstellen eine beliebte Wahl für die Überprüfung der Identität von Websites und anderen Diensten sind, die der Allgemeinheit bereitgestellt werden, werden private Zertifizierungsstellen normalerweise für geschlossene Gruppen und private Dienste verwendet.

Durch den Aufbau einer privaten Zertifizierungsstelle können Sie Programme konfigurieren, testen und ausführen, die verschlüsselte Verbindungen zwischen einem Client und einem Server erfordern. Mit einer privaten Zertifizierungsstelle können Sie Zertifikate für Benutzer, Server oder einzelne Programme und Dienste innerhalb Ihrer Infrastruktur ausstellen.

Einige Beispiele für Programme unter Linux, die ihre eigene private Zertifizierungsstelle verwenden, sind OpenVPN und Puppet . Sie können Ihren Webserver auch so konfigurieren, dass er von einer privaten Zertifizierungsstelle ausgestellte Zertifikate verwendet, damit Entwicklungs- und Staging-Umgebungen mit Produktionsservern übereinstimmen, die TLS zum Verschlüsseln von Verbindungen verwenden.

In diesem Handbuch richten Sie eine private Zertifizierungsstelle auf einem Ubuntu 22.04-Server ein und generieren und signieren dann ein Testzertifikat mit Ihrer neuen Zertifizierungsstelle. Sie erfahren auch, wie Sie das öffentliche Zertifikat des CA-Servers in den Zertifikatsspeicher Ihres Betriebssystems importieren, damit Sie die Vertrauenskette zwischen der CA und Remote-Servern oder Benutzern überprüfen können. Schließlich erfahren Sie, wie Sie Zertifikate widerrufen und eine Zertifikatssperrliste verteilen, um sicherzustellen, dass nur autorisierte Benutzer und Systeme Dienste nutzen können, die auf Ihre Zertifizierungsstelle angewiesen sind.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie Zugriff auf einen Ubuntu 22.04-Server, um Ihren CA-Server zu hosten. Sie müssen einen Nicht-Root konfigurieren Benutzer mit sudo Privilegien, bevor Sie mit diesem Handbuch beginnen. Sie können unserem Ubuntu 22.04-Leitfaden zur Ersteinrichtung des Servers folgen, um einen Benutzer mit den entsprechenden Berechtigungen einzurichten. Das verlinkte Tutorial richtet auch eine Firewall ein , von der angenommen wird, dass sie in diesem Handbuch überall vorhanden ist.

Dieser Server wird als CA-Server bezeichnet in diesem Tutorial.

Stellen Sie sicher, dass der CA-Server ein eigenständiges System ist. Es wird nur zum Importieren, Signieren und Widerrufen von Zertifikatsanforderungen verwendet. Es sollte keine anderen Dienste ausführen und idealerweise offline oder vollständig heruntergefahren sein, wenn Sie nicht aktiv mit Ihrer Zertifizierungsstelle arbeiten.

Hinweis: Der letzte Abschnitt dieses Tutorials ist optional, wenn Sie mehr über das Signieren und Widerrufen von Zertifikaten erfahren möchten. Wenn Sie diese Übungsschritte durchführen möchten, benötigen Sie einen zweiten Ubuntu 22.04-Server oder Sie können auch Ihren eigenen lokalen Linux-Computer verwenden, auf dem Ubuntu oder Debian oder davon abgeleitete Distributionen ausgeführt werden.

Schritt 1 – Easy-RSA installieren

Die erste Aufgabe in diesem Tutorial ist die Installation von easy-rsa Satz von Skripten auf Ihrem CA-Server. easy-rsa ist ein Verwaltungstool für Zertifizierungsstellen, mit dem Sie einen privaten Schlüssel und ein öffentliches Stammzertifikat generieren, das Sie dann verwenden, um Anforderungen von Clients und Servern zu signieren, die sich auf Ihre Zertifizierungsstelle verlassen.

Melden Sie sich bei Ihrem CA-Server als sudo-Benutzer ohne Rootberechtigung an, den Sie während der anfänglichen Einrichtungsschritte erstellt haben, und führen Sie Folgendes aus:

  1. sudo apt update
  2. sudo apt install easy-rsa

Sie werden aufgefordert, das Paket herunterzuladen und zu installieren. Drücken Sie y um zu bestätigen, dass Sie das Paket installieren möchten.

An diesem Punkt haben Sie alles, was Sie brauchen, eingerichtet und können Easy-RSA verwenden. Im nächsten Schritt erstellen Sie eine Public-Key-Infrastruktur und beginnen dann mit dem Aufbau Ihrer Zertifizierungsstelle.

Schritt 2 – Vorbereiten eines Public-Key-Infrastrukturverzeichnisses

Nun, da Sie easy-rsa installiert haben , ist es an der Zeit, auf dem CA-Server eine Skelett-PKI (Public Key Infrastructure) zu erstellen. Stellen Sie sicher, dass Sie immer noch als Nicht-Root-Benutzer angemeldet sind, und erstellen Sie eine easy-rsa Verzeichnis. Stellen Sie sicher, dass Sie nicht sudo verwenden um einen der folgenden Befehle auszuführen, da Ihr normaler Benutzer die Zertifizierungsstelle ohne erhöhte Berechtigungen verwalten und mit ihr interagieren sollte.

  1. mkdir ~/easy-rsa

Dadurch wird ein neues Verzeichnis mit dem Namen easy-rsa erstellt in Ihrem Home-Ordner. Wir verwenden dieses Verzeichnis, um symbolische Links zu erstellen, die auf easy-rsa verweisen Paketdateien, die wir im vorherigen Schritt installiert haben. Diese Dateien befinden sich im Verzeichnis /usr/share/easy-rsa Ordner auf dem CA-Server.

Erstellen Sie die Symlinks mit dem ln Befehl:

  1. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Hinweis: Während andere Anleitungen Sie möglicherweise anweisen, die Datei easy-rsa zu kopieren package-Dateien in Ihr PKI-Verzeichnis, verwendet dieses Tutorial einen Symlink-Ansatz. Daher werden alle Aktualisierungen von easy-rsa Paket wird automatisch in den Skripten Ihrer PKI widergespiegelt.

Um den Zugriff auf Ihr neues PKI-Verzeichnis einzuschränken, stellen Sie mithilfe von chmod sicher, dass nur der Eigentümer darauf zugreifen kann Befehl:

  1. chmod 700 /home/sammy/easy-rsa

Initialisieren Sie abschließend die PKI in easy-rsa Verzeichnis:

  1. cd ~/easy-rsa
  2. ./easyrsa init-pki
Outputinit-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/sammy/easy-rsa/pki

Nachdem Sie diesen Abschnitt abgeschlossen haben, verfügen Sie über ein Verzeichnis, das alle Dateien enthält, die zum Erstellen einer Zertifizierungsstelle erforderlich sind. Im nächsten Abschnitt erstellen Sie den privaten Schlüssel und das öffentliche Zertifikat für Ihre CA.

Schritt 3 – Erstellen einer Zertifizierungsstelle

Bevor Sie den privaten Schlüssel und das Zertifikat Ihrer Zertifizierungsstelle erstellen können, müssen Sie eine Datei namens vars erstellen und füllen mit einigen Standardwerten. Zuerst werden Sie cd in die easy-rsa Verzeichnis, dann erstellen und bearbeiten Sie die vars Datei mit nano oder Ihren bevorzugten Texteditor:

  1. cd ~/easy-rsa
  2. nano vars

Sobald die Datei geöffnet ist, fügen Sie die folgenden Zeilen ein und bearbeiten Sie jeden hervorgehobenen Wert, um Ihre eigenen Organisationsinformationen widerzuspiegeln. Der wichtige Teil hier ist sicherzustellen, dass Sie keinen der Werte leer lassen:

~/easy-rsa/varsset_var EASYRSA_REQ_COUNTRY    "US"
set_var EASYRSA_REQ_PROVINCE   "NewYork"
set_var EASYRSA_REQ_CITY       "New York City"
set_var EASYRSA_REQ_ORG        "DigitalOcean"
set_var EASYRSA_REQ_EMAIL      "[email protected]"
set_var EASYRSA_REQ_OU         "Community"
set_var EASYRSA_ALGO           "ec"
set_var EASYRSA_DIGEST         "sha512"

Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano verwenden , können Sie dies tun, indem Sie CTRL+X drücken , dann Y und ENTER bestätigen. Sie können jetzt Ihre Zertifizierungsstelle erstellen.

Um das Paar aus öffentlichem und privatem Root-Schlüssel für Ihre Zertifizierungsstelle zu erstellen, führen Sie ./easy-rsa aus Befehl erneut, diesmal mit dem build-ca Möglichkeit:

  1. ./easyrsa build-ca

In der Ausgabe sehen Sie einige Zeilen zur OpenSSL-Version und werden aufgefordert, eine Passphrase für Ihr Schlüsselpaar einzugeben. Achten Sie darauf, eine starke Passphrase zu wählen, und notieren Sie sie an einem sicheren Ort. Sie müssen die Passphrase jedes Mal eingeben, wenn Sie mit Ihrer Zertifizierungsstelle interagieren müssen, beispielsweise um ein Zertifikat zu signieren oder zu widerrufen.

Sie werden auch aufgefordert, den Common Name (CN) für Ihre CA zu bestätigen. Der CN ist der Name, der verwendet wird, um sich auf dieses System im Kontext der Zertifizierungsstelle zu beziehen. Sie können für den allgemeinen Namen der Zertifizierungsstelle eine beliebige Zeichenfolge eingeben, drücken Sie jedoch der Einfachheit halber die EINGABETASTE, um den Standardnamen zu akzeptieren.

Output. . .
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
. . .
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/sammy/easy-rsa/pki/ca.crt

Hinweis: Wenn Sie nicht jedes Mal nach einem Passwort gefragt werden möchten, wenn Sie mit Ihrer Zertifizierungsstelle interagieren, können Sie build-ca ausführen Befehl mit dem nopass Option, etwa so:

  1. ./easyrsa build-ca nopass

Sie haben jetzt zwei wichtige Dateien – ~/easy-rsa/pki/ca.crt und ~/easy-rsa/pki/private/ca.key — die die öffentlichen und privaten Komponenten einer Zertifizierungsstelle bilden.

  • ca.crt ist die öffentliche Zertifikatsdatei der CA. Benutzer, Server und Clients verwenden dieses Zertifikat, um zu überprüfen, ob sie Teil desselben Web of Trust sind. Jeder Benutzer und Server, der Ihre Zertifizierungsstelle verwendet, benötigt eine Kopie dieser Datei. Alle Parteien verlassen sich auf das öffentliche Zertifikat, um sicherzustellen, dass sich niemand als System ausgibt und einen Man-in-the-Middle-Angriff durchführt.

  • ca.key ist der private Schlüssel, den die Zertifizierungsstelle zum Signieren von Zertifikaten für Server und Clients verwendet. Wenn ein Angreifer Zugriff auf Ihre CA und damit auf Ihren ca.key erhält Datei müssen Sie Ihre CA zerstören. Aus diesem Grund ist Ihr ca.key Datei sollte nur auf Ihrem CA-Rechner sein und Ihr CA-Rechner als zusätzliche Sicherheitsmaßnahme idealerweise offline gehalten werden sollte, wenn keine Zertifikatsanfragen signiert werden.

Damit ist Ihre CA eingerichtet und kann zum Signieren von Zertifikatsanfragen und zum Widerrufen von Zertifikaten verwendet werden.

Schritt 4 – Verteilen des öffentlichen Zertifikats Ihrer Zertifizierungsstelle

Jetzt ist Ihre Zertifizierungsstelle konfiguriert und bereit, als Vertrauensanker für alle Systeme zu fungieren, die Sie für ihre Verwendung konfigurieren möchten. Sie können das Zertifikat der Zertifizierungsstelle zu Ihren OpenVPN-Servern, Webservern, Mailservern usw. hinzufügen. Jeder Benutzer oder Server, der die Identität eines anderen Benutzers oder Servers in Ihrem Netzwerk überprüfen muss, sollte eine Kopie von ca.crt haben Datei, die in den Zertifikatspeicher ihres Betriebssystems importiert wurde.

Um das öffentliche Zertifikat der CA in ein zweites Linux-System wie einen anderen Server oder einen lokalen Computer zu importieren, besorgen Sie sich zunächst eine Kopie der ca.crt Datei von Ihrem CA-Server. Sie können die cat verwenden Befehl, um es in einem Terminal auszugeben, und kopieren Sie es dann und fügen Sie es in eine Datei auf dem zweiten Computer ein, der das Zertifikat importiert. Sie können auch Tools wie scp verwenden , rsync um die Datei zwischen Systemen zu übertragen. Wir verwenden jedoch Kopieren und Einfügen mit nano in diesem Schritt, da es auf allen Systemen funktioniert.

Führen Sie als Nicht-Root-Benutzer auf dem CA-Server den folgenden Befehl aus:

  1. cat ~/easy-rsa/pki/ca.crt

In Ihrem Terminal wird eine Ausgabe ähnlich der folgenden angezeigt:

Output-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw
. . .
. . .
-----END CERTIFICATE-----

Kopieren Sie alles, einschließlich -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- Linien und die Bindestriche.

Verwenden Sie auf Ihrem zweiten Linux-System nano oder Ihren bevorzugten Texteditor, um eine Datei namens /tmp/ca.crt zu öffnen :

  1. nano /tmp/ca.crt

Fügen Sie den Inhalt, den Sie gerade vom CA-Server kopiert haben, in den Editor ein. Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano verwenden , können Sie dies tun, indem Sie CTRL+X drücken , dann Y und ENTER zu bestätigen.

Jetzt haben Sie eine Kopie der ca.crt Datei auf Ihrem zweiten Linux-System ist es an der Zeit, das Zertifikat in den Zertifikatspeicher des Betriebssystems zu importieren.

Führen Sie auf Ubuntu- und Debian-basierten Systemen die folgenden Befehle als Nicht-Root-Benutzer aus, um das Zertifikat zu importieren:

Von Ubuntu und Debian abgeleitete Distributionen
  1. sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  2. sudo update-ca-certificates

Um das Zertifikat des CA-Servers auf einem CentOS-, Fedora- oder RedHat-basierten System zu importieren, kopieren Sie den Dateiinhalt und fügen Sie ihn wie im vorherigen Beispiel in eine Datei namens /tmp/ca.crt auf dem System ein . Als Nächstes kopieren Sie das Zertifikat nach /etc/pki/ca-trust/source/anchors/ , und führen Sie dann update-ca-trust aus Befehl.

CentOS-, Fedora-, RedHat-Distributionen
  1. sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
  2. sudo update-ca-trust

Jetzt vertraut Ihr zweites Linux-System jedem Zertifikat, das vom CA-Server signiert wurde.

Hinweis: Wenn Sie Ihre CA mit Webservern verwenden und Firefox als Browser verwenden, müssen Sie die öffentliche ca.crt importieren Zertifikat direkt in Firefox. Firefox verwendet nicht den Zertifikatsspeicher des lokalen Betriebssystems. Einzelheiten zum Hinzufügen Ihres CA-Zertifikats zu Firefox finden Sie in diesem Support-Artikel von Mozilla zum Einrichten von Zertifizierungsstellen (CAs) in Firefox.

Wenn Sie Ihre Zertifizierungsstelle zur Integration in eine Windows-Umgebung oder Desktop-Computer verwenden, lesen Sie bitte die Dokumentation zur Verwendung von certutil.exe um ein CA-Zertifikat zu installieren.

Wenn Sie dieses Tutorial als Voraussetzung für ein anderes Tutorial verwenden oder mit dem Signieren und Widerrufen von Zertifikaten vertraut sind, können Sie hier aufhören. Wenn Sie mehr darüber erfahren möchten, wie Zertifikate signiert und widerrufen werden, wird im folgenden optionalen Abschnitt jeder Vorgang im Detail erläutert.

(Optional) – Erstellen von Zertifikatsignierungsanforderungen und Widerrufen von Zertifikaten

Die folgenden Abschnitte des Tutorials sind optional. Wenn Sie alle vorherigen Schritte abgeschlossen haben, verfügen Sie über eine vollständig konfigurierte und funktionierende Zertifizierungsstelle, die Sie als Voraussetzung für andere Tutorials verwenden können. Sie können die ca.crt Ihrer Zertifizierungsstelle importieren Datei und Überprüfung von Zertifikaten in Ihrem Netzwerk, die von Ihrer Zertifizierungsstelle signiert wurden.

Wenn Sie üben und mehr darüber erfahren möchten, wie Zertifikatsanfragen signiert und Zertifikate widerrufen werden, dann erklären diese optionalen Abschnitte, wie beide Prozesse funktionieren.

(Optional) – Erstellen und Signieren einer Praxiszertifikatsanforderung

Nachdem Sie nun eine einsatzbereite Zertifizierungsstelle haben, können Sie das Generieren eines privaten Schlüssels und einer Zertifikatsanforderung üben, um sich mit dem Signatur- und Verteilungsprozess vertraut zu machen.

Ein Certificate Signing Request (CSR) besteht aus drei Teilen:einem öffentlichen Schlüssel, der Informationen über das anfragende System identifiziert, und einer Signatur der Anfrage selbst, die mit dem privaten Schlüssel der anfragenden Partei erstellt wird. Der private Schlüssel wird geheim gehalten und zum Verschlüsseln von Informationen verwendet, die jeder mit dem signierten öffentlichen Zertifikat entschlüsseln kann.

Die folgenden Schritte werden auf Ihrem zweiten Ubuntu- oder Debian-System oder einer davon abgeleiteten Distribution ausgeführt. Es kann ein anderer Remote-Server oder eine lokale Linux-Maschine wie ein Laptop oder ein Desktop-Computer sein. Seit easy-rsa nicht standardmäßig auf allen Systemen verfügbar ist, verwenden wir den openssl Tool zum Erstellen eines privaten Übungsschlüssels und Zertifikats.

openssl wird normalerweise standardmäßig auf den meisten Linux-Distributionen installiert, aber um sicherzugehen, führen Sie Folgendes auf Ihrem System aus:

  1. sudo apt update
  2. sudo apt install openssl

Wenn Sie aufgefordert werden, openssl zu installieren geben Sie y ein um mit den Installationsschritten fortzufahren. Jetzt können Sie mit openssl eine Übungs-CSR erstellen .

Der erste Schritt, den Sie zum Erstellen einer CSR ausführen müssen, ist das Generieren eines privaten Schlüssels. So erstellen Sie einen privaten Schlüssel mit openssl , erstellen Sie eine practice-csr Verzeichnis und generieren Sie dann einen Schlüssel darin. Wir stellen diese Anfrage für einen fiktiven Server namens sammy-server , im Gegensatz zum Erstellen eines Zertifikats, das zum Identifizieren eines Benutzers oder einer anderen Zertifizierungsstelle verwendet wird.

  1. mkdir ~/practice-csr
  2. cd ~/practice-csr
  3. openssl genrsa -out sammy-server.key

Nachdem Sie nun einen privaten Schlüssel haben, können Sie einen entsprechenden CSR erstellen, wiederum mit dem openssl Nützlichkeit. Sie werden aufgefordert, eine Reihe von Feldern wie Land, Bundesland und Stadt auszufüllen. Sie können einen . eingeben wenn Sie ein Feld leer lassen möchten, aber beachten Sie, dass es am besten ist, die korrekten Werte für Ihren Standort und Ihre Organisation zu verwenden, wenn es sich um eine echte CSR handelt:

  1. openssl req -new -key sammy-server.key -out sammy-server.req
Output. . .
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:New York
Locality Name (eg, city) [Default City]:New York City
Organization Name (eg, company) [Default Company Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:Community
Common Name (eg, your name or your server's hostname) []:sammy-server
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Wenn Sie diese Werte automatisch als Teil von openssl hinzufügen möchten Aufruf statt über die interaktive Eingabeaufforderung können Sie den -subj übergeben Argument für OpenSSL. Achten Sie darauf, die hervorgehobenen Werte so zu bearbeiten, dass sie mit Ihrem Praxisstandort, Ihrer Organisation und Ihrem Servernamen übereinstimmen:

  1. openssl req -new -key sammy-server.key -out server.req -subj \
  2. /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server

Um den Inhalt eines CSR zu überprüfen, können Sie mit openssl eine Anforderungsdatei einlesen und untersuchen Sie die Felder darin:

  1. openssl req -in sammy-server.req -noout -subject
Outputsubject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

Wenn Sie mit dem Betreff Ihrer Übungszertifikatanforderung zufrieden sind, kopieren Sie sammy-server.req Datei mit scp auf Ihren CA-Server :

  1. scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

In diesem Schritt haben Sie eine Certificate Signing Request für einen fiktiven Server namens sammy-server generiert . In einem realen Szenario könnte die Anfrage von so etwas wie einem Staging- oder Entwicklungswebserver stammen, der ein TLS-Zertifikat zum Testen benötigt; oder es könnte von einem OpenVPN-Server kommen, der ein Zertifikat anfordert, damit Benutzer eine Verbindung zu einem VPN herstellen können. Im nächsten Schritt signieren wir die Zertifikat-Signaturanforderung mit dem privaten Schlüssel des CA-Servers.

(Optional) – Signieren einer CSR

Im vorherigen Schritt haben Sie eine Anforderung für ein Übungszertifikat und einen Schlüssel für einen fiktiven Server erstellt. Sie haben es nach /tmp kopiert Verzeichnis auf Ihrem CA-Server und emulieren den Prozess, den Sie verwenden würden, wenn Sie echte Clients oder Server hätten, die Ihnen CSR-Anforderungen senden, die signiert werden müssen.

Um mit dem fiktiven Szenario fortzufahren, muss der CA-Server nun das Praxiszertifikat importieren und signieren. Sobald eine Zertifikatsanforderung von der Zertifizierungsstelle validiert und an einen Server zurückgesendet wurde, können Clients, die der Zertifizierungsstelle vertrauen, auch dem neu ausgestellten Zertifikat vertrauen.

Da wir innerhalb der PKI der Zertifizierungsstelle arbeiten werden, wo der easy-rsa Dienstprogramm verfügbar ist, verwenden die Signierschritte den easy-rsa Dienstprogramm, um die Dinge einfacher zu machen, im Gegensatz zur Verwendung von openssl direkt wie im vorherigen Beispiel.

Der erste Schritt zum Signieren der fiktiven CSR besteht darin, die Zertifikatsanforderung mit easy-rsa zu importieren Skript:

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output. . .
The request has been successfully imported with a short name of: sammy-server
You may now use this name to perform signing operations on this request.

Jetzt können Sie die Anfrage signieren, indem Sie easyrsa ausführen Skript mit dem sign-req Option, gefolgt vom Anforderungstyp und dem Common Name, der in der CSR enthalten ist. Der Anforderungstyp kann entweder client sein , server , oder ca . Da wir mit einem Zertifikat für einen fiktiven Server üben, stellen Sie sicher, dass Sie den server verwenden Anfragetyp:

  1. ./easyrsa sign-req server sammy-server

In der Ausgabe werden Sie aufgefordert, zu bestätigen, dass die Anfrage von einer vertrauenswürdigen Quelle stammt. Geben Sie yes ein drücken Sie dann ENTER um dies zu bestätigen:

OutputYou are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:

subject=
    countryName               = US
    stateOrProvinceName       = New York
    localityName              = New York City
    organizationName          = DigitalOcean
    organizationalUnitName    = Community
    commonName                = sammy-server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
. . .

Wenn Sie Ihren CA-Schlüssel verschlüsselt haben, werden Sie an dieser Stelle zur Eingabe Ihres Passworts aufgefordert.

Sie erhalten eine Ausgabe wie die folgende:

OutputCheck that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'US'
stateOrProvinceName   :ASN.1 12:'New York'
localityName          :ASN.1 12:'New York City'
organizationName      :ASN.1 12:'DigitalOcean'
organizationalUnitName:ASN.1 12:'Community'
commonName            :ASN.1 12:'sammy-server'
Certificate is to be certified until Jul 21 13:59:08 2024 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

Wenn diese Schritte abgeschlossen sind, haben Sie sammy-server.req signiert CSR unter Verwendung des privaten Schlüssels des CA-Servers in /home/sammy/easy-rsa/pki/private/ca.key . Die resultierende sammy-server.crt enthält den öffentlichen Verschlüsselungsschlüssel des Übungsservers sowie eine neue Signatur vom CA-Server. Der Sinn der Signatur besteht darin, jedem, der der CA vertraut, mitzuteilen, dass er auch dem sammy-server vertrauen kann Zertifikat.

Wenn diese Anfrage für einen echten Server wie einen Webserver oder VPN-Server wäre, wäre der letzte Schritt auf dem CA-Server die Verteilung der neuen sammy-server.crt und ca.crt Dateien vom CA-Server an den Remote-Server, der die CSR-Anfrage gestellt hat:

  1. scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_server_ip:/tmp

An diesem Punkt können Sie das ausgestellte Zertifikat beispielsweise mit einem Webserver, einem VPN, einem Konfigurationsverwaltungstool, einem Datenbanksystem oder für Client-Authentifizierungszwecke verwenden.

(Optional) – Widerrufen eines Zertifikats

Gelegentlich müssen Sie möglicherweise ein Zertifikat widerrufen, um zu verhindern, dass ein Benutzer oder Server es verwendet. Vielleicht wurde jemandes Laptop gestohlen, ein Webserver wurde kompromittiert oder ein Mitarbeiter oder Auftragnehmer hat Ihr Unternehmen verlassen.

Um ein Zertifikat zu widerrufen, folgt der allgemeine Prozess diesen Schritten:

  1. Widerrufen Sie das Zertifikat mit ./easyrsa revoke client_name Befehl.
  2. Generieren Sie eine neue CRL mit ./easyrsa gen-crl Befehl.
  3. Übertragen Sie die aktualisierte crl.pem Datei auf den oder die Server, die auf Ihre Zertifizierungsstelle angewiesen sind, und kopieren Sie sie auf diesen Systemen in das erforderliche Verzeichnis oder die erforderlichen Verzeichnisse für Programme, die darauf verweisen.
  4. Starten Sie alle Dienste neu, die Ihre Zertifizierungsstelle und die CRL-Datei verwenden.

Sie können diesen Vorgang verwenden, um alle Zertifikate, die Sie zuvor ausgestellt haben, jederzeit zu widerrufen. In den folgenden Abschnitten gehen wir jeden Schritt im Detail durch, beginnend mit dem revoke Befehl.

Widerrufen eines Zertifikats

Navigieren Sie zum Widerrufen eines Zertifikats zu easy-rsa Verzeichnis auf Ihrem CA-Server:

  1. cd ~/easy-rsa

Als nächstes führen Sie easyrsa aus Skript mit dem revoke Option, gefolgt vom Kundennamen, den Sie widerrufen möchten. Nach dem obigen Praxisbeispiel lautet der Common Name des Zertifikats sammy-server :

  1. ./easyrsa revoke sammy-server

Dieser fordert Sie auf, den Widerruf durch Eingabe von yes zu bestätigen :

OutputPlease confirm you wish to revoke the certificate with the following subject:

subject=
    commonName                = sammy-server


Type the word 'yes' to continue, or any other input to abort.
  Continue with revocation: yes
. . .
Revoking Certificate 8348B3F146A765581946040D5C4D590A
. . .

Beachten Sie den hervorgehobenen Wert auf dem Revoking Certificate Linie. Dieser Wert ist die eindeutige Seriennummer des widerrufenen Zertifikats. Wenn Sie die Widerrufsliste im letzten Schritt dieses Abschnitts untersuchen möchten, um sicherzustellen, dass das Zertifikat darin enthalten ist, benötigen Sie diesen Wert.

Nach Bestätigung der Aktion wird die CA das Zertifikat widerrufen. Remote-Systeme, die auf die CA angewiesen sind, haben jedoch keine Möglichkeit zu überprüfen, ob Zertifikate widerrufen wurden. Benutzer und Server können das Zertifikat weiterhin verwenden, bis die Certificate Revocation List (CRL) der Zertifizierungsstelle an alle Systeme verteilt wurde, die auf die Zertifizierungsstelle angewiesen sind.

Im nächsten Schritt generieren Sie eine CRL oder aktualisieren eine vorhandene crl.pem Datei.

Generieren einer Zertifikatswiderrufsliste

Nachdem Sie ein Zertifikat widerrufen haben, ist es wichtig, die Liste der widerrufenen Zertifikate auf Ihrem CA-Server zu aktualisieren. Sobald Sie eine aktualisierte Widerrufsliste haben, können Sie feststellen, welche Benutzer und Systeme gültige Zertifikate in Ihrer CA haben.

Um eine CRL zu generieren, führen Sie easy-rsa aus Befehl mit dem gen-crl Option, während Sie sich noch in ~/easy-rsa befinden Verzeichnis:

  1. ./easyrsa gen-crl

Wenn Sie beim Erstellen Ihres ca.key eine Passphrase verwendet haben Datei, werden Sie aufgefordert, sie einzugeben. Die gen-crl Der Befehl generiert eine Datei namens crl.pem , die die aktualisierte Liste der widerrufenen Zertifikate für diese Zertifizierungsstelle enthält.

Als nächstes müssen Sie die aktualisierte crl.pem übertragen Datei an alle Server und Clients, die sich auf diese Zertifizierungsstelle verlassen, jedes Mal, wenn Sie gen-crl ausführen Befehl. Andernfalls können Clients und Systeme weiterhin auf Dienste und Systeme zugreifen, die Ihre Zertifizierungsstelle verwenden, da diese Dienste den Widerrufsstatus des Zertifikats kennen müssen.

Übertragen einer Zertifikatswiderrufsliste

Nachdem Sie nun eine CRL auf Ihrem CA-Server generiert haben, müssen Sie sie auf Remote-Systeme übertragen, die auf Ihre CA angewiesen sind. Um diese Datei auf Ihre Server zu übertragen, können Sie den scp verwenden Befehl.

Hinweis: In diesem Tutorial wird erklärt, wie Sie eine CRL manuell generieren und verteilen. Es gibt zwar robustere und automatisierte Methoden zum Verteilen und Prüfen von Sperrlisten wie OCSP-Stapling, aber die Konfiguration dieser Methoden würde den Rahmen dieses Artikels sprengen.

Stellen Sie sicher, dass Sie bei Ihrem CA-Server als Nicht-Root-Benutzer angemeldet sind, und führen Sie Folgendes aus, wobei Sie your_server_ip durch Ihre eigene Server-IP oder Ihren eigenen DNS-Namen ersetzen :

  1. scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

Nachdem sich die Datei nun auf dem Remote-System befindet, besteht der letzte Schritt darin, alle Dienste mit der neuen Kopie der Widerrufsliste zu aktualisieren.

Aktualisieren von Diensten, die eine CRL unterstützen

Auflisten der Schritte, die Sie ausführen müssen, um Dienste zu aktualisieren, die crl.pem verwenden Datei würde den Rahmen dieses Tutorials sprengen. Im Allgemeinen müssen Sie die crl.pem kopieren Datei in den Speicherort, den der Dienst erwartet, und starten Sie ihn dann mit systemctl neu .

Nachdem Sie Ihre Dienste mit der neuen crl.pem aktualisiert haben -Datei können Ihre Dienste Verbindungen von Clients oder Servern ablehnen, die ein widerrufenes Zertifikat verwenden.

Untersuchen und Verifizieren des Inhalts einer CRL

Wenn Sie eine CRL-Datei untersuchen möchten, um beispielsweise eine Liste widerrufener Zertifikate zu bestätigen, verwenden Sie den folgenden openssl Befehl aus Ihrem easy-rsa Verzeichnis auf Ihrem CA-Server:

  1. cd ~/easy-rsa
  2. openssl crl -in pki/crl.pem -noout -text

Sie können diesen Befehl auch auf jedem Server oder System ausführen, das über openssl verfügt Tool mit einer Kopie der crl.pem installiert Datei. Zum Beispiel, wenn Sie die crl.pem übertragen haben Datei auf Ihr zweites System und möchten überprüfen, ob der sammy-server Zertifikat widerrufen wird, können Sie ein openssl verwenden Befehl wie den folgenden, wobei Sie die Seriennummer, die Sie zuvor beim Widerrufen des Zertifikats notiert haben, anstelle der hier hervorgehobenen ersetzen:

  1. openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output    Serial Number: 8348B3F146A765581946040D5C4D590A
        Revocation Date: Apr 18 14:00:37 2022 GMT

Beachten Sie, wie das grep Befehl wird verwendet, um nach der eindeutigen Seriennummer zu suchen, die Sie im Widerrufsschritt notiert haben. Jetzt können Sie den Inhalt Ihrer Zertifikatsperrliste auf jedem System überprüfen, das sich darauf verlässt, um den Zugriff auf Benutzer und Dienste einzuschränken.

Schlussfolgerung

In diesem Tutorial haben Sie eine private Zertifizierungsstelle mit dem Easy-RSA-Paket auf einem eigenständigen Ubuntu 22.04-Server erstellt. Sie haben untersucht, wie das Vertrauensmodell zwischen Parteien funktioniert, die sich auf die Zertifizierungsstelle verlassen. Außerdem haben Sie einen Certificate Signing Request (CSR) für einen Übungsserver erstellt und signiert und dann gelernt, wie Sie ein Zertifikat widerrufen. Schließlich haben Sie gelernt, wie Sie eine Zertifikatsperrliste (CRL) für jedes System erstellen und verteilen, das sich auf Ihre Zertifizierungsstelle verlässt, um sicherzustellen, dass Benutzer oder Server, die nicht auf Dienste zugreifen sollen, daran gehindert werden.

Jetzt können Sie Zertifikate für Benutzer ausstellen und diese mit Diensten wie OpenVPN verwenden. You can also use your CA to configure development and staging web servers with certificates to secure your non-production environments. Using a CA with TLS certificates during development can help ensure that your code and environments match your production environment as closely as possible.

If you would like to learn more about how to use OpenSSL, our OpenSSL Essentials:Working with SSL Certificates, Private Keys and CSRs tutorial has lots of additional information to help you become more familiar with OpenSSL fundamentals.


OpenVPN
  1. So konfigurieren Sie einen NFS-Server und mounten NFS-Freigaben unter Ubuntu 14.10

  2. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  3. So installieren und konfigurieren Sie den Redis-Server in Ubuntu

  4. So richten Sie WireGuard unter Ubuntu 22.04 ein

  5. So richten Sie NFS-Server und -Client unter Ubuntu 20.04 ein

So richten Sie einen OpenVPN-Server unter Ubuntu 22.04 ein und konfigurieren ihn

So installieren und konfigurieren Sie den OpenLDAP-Server unter Ubuntu 16.04

So installieren und konfigurieren Sie VNC auf Ubuntu Server 20.04

So installieren und konfigurieren Sie Parse Server unter Ubuntu 20.04

So installieren und konfigurieren Sie einen TeamSpeak Server auf Ubuntu 18.04

So installieren und konfigurieren Sie einen Minecraft-Server unter Ubuntu 18.04