GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So erstellen Sie eine Zertifizierungsstelle (CA) unter Ubuntu 20.04

Certificate Authority (CA) ist eine Instanz, die für die Ausstellung digitaler Zertifikate verantwortlich ist, um die Kommunikation sicher zu machen. Es fungiert als vertrauenswürdiger Dritter für den Eigentümer des Zertifikats und die Partei, die sich auf das Zertifikat verlässt.

Die Entität der Zertifizierungsstelle kann entweder öffentlich oder privat sein. Öffentliche Zertifizierungsstellen werden häufig verwendet, um die Identität von Websites zu überprüfen, und private Zertifizierungsstellen werden zum Generieren von Zertifikaten für ein Client-to-Site-VPN, Benutzer, interne Server oder einzelne Programme und Dienste innerhalb Ihrer Infrastruktur wie lokale Webserver verwendet.

In diesem Tutorial lernen wir, wie man eine private Zertifizierungsstelle (CA) erstellt auf Ubuntu 20.04 . Hier verwenden wir easy-rsa CLI-Dienstprogramm zum Erstellen und Verwalten des CA-Servers.

Voraussetzungen

  • Ein Knoten mit Ubuntu 20.04 zum Hosten von CA Server
  • Ein Benutzer mit sudo-Berechtigung

Schritt 1:Aktualisieren Sie Ihr System

Aktualisieren Sie zuerst Ihr Ubuntu-System, führen Sie den folgenden Befehl aus:

apt update

Sie können diesen Schritt überspringen, wenn Sie easy-rsa aus dem offiziellen Repo installieren.

Schritt 2:Easy-RSA auf dem CA-Server installieren

Easy-RSA ist ein Kommandozeilen-Tool, das die Einrichtung einer Zertifizierungsstelle (CA) und die Verwaltung von Zertifikaten erheblich erleichtert. Es generiert einen privaten Schlüssel und ein öffentliches Stammzertifikat.

Easy-RSA ist im standardmäßigen apt-Repository verfügbar. Um die neueste Version aus dem offiziellen easy-rsa GitHub-Repository installieren zu lassen.

Laden Sie das Easy-RSA-PKI-Verwaltungstool von Github herunter:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

Habe hier Version 3.0.8 heruntergeladen . Lassen Sie uns nun die Datei nach /opt verschieben Ordner

sudo mv EasyRSA-3.0.8.tgz /opt

Wechseln Sie nun in das Verzeichnis /opt:

cd /opt

Führen Sie den folgenden Befehl aus, um die .tgz-Datei zu dekomprimieren:

sudo tar xvf EasyRSA-3.0.8.tgz

Benennen Sie das Verzeichnis mit dem mv-Befehl um:

sudo mv EasyRSA-3.0.8 easy-rsa

Machen Sie nun den Nicht-Root-Benutzer zum Besitzer des Verzeichnisses:

sudo chown -R franck:franck easy-rsa/ 

Beschränken Sie den Zugriff auf das PKI-Verzeichnis, nur für den Besitzer:

sudo chmod 700 easy-rsa

Schritt 3:Richten Sie den CA-Server ein

Hier richten wir das Infrastrukturverzeichnis für öffentliche Schlüssel ein und erstellen ein öffentliches/privates Zertifikat für den CA-Server.

Wechseln Sie nun in das zuvor angelegte Verzeichnis easy-rsa:

cd easy-rsa

Wir werden eine vars erstellen Datei, die zum Speichern der Organisationsinformationen verwendet wird

$ cp vars.example vars

Fügen Sie nun die Organisationsinformationen am Ende der Datei hinzu

$ vim vars
set_var EASYRSA_REQ_COUNTRY    "CM"
set_var EASYRSA_REQ_PROVINCE   "Centre"
set_var EASYRSA_REQ_CITY       "Yaounde"
set_var EASYRSA_REQ_ORG        "LINUXSHARE"
set_var EASYRSA_REQ_EMAIL      "[email protected]"
set_var EASYRSA_REQ_OU         "Com"
set_var EASYRSA_ALGO           "ec"
set_var EASYRSA_DIGEST         "sha512"

Jetzt werden wir das Public Key Infrastructure-Verzeichnis initialisieren:

$ ./easyrsa init-pki
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 init-pki complete; you may now create a CA or requests.
 Your newly created PKI dir is: /opt/easy-rsa/pki

Um das Root Public zu generieren und privates Schlüsselpaar Geben Sie für den CA-Server Folgendes ein:

$ ./easyrsa build-ca
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
 Enter New CA Key Passphrase: 
 Re-Enter New CA Key Passphrase: 
 read EC key
 writing EC key
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 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:
 /opt/easy-rsa/pki/ca.crt

Sie werden jedes Mal aufgefordert, eine Passphrase für das Schlüsselpaar einzugeben, wenn Sie ein Zertifikat signieren oder widerrufen müssen. Sie werden auch nach dem Common Name (CN) für Ihre CA gefragt, Sie können den Standardnamen verwenden, wenn Sie möchten.

Die Operation erstellt zwei Hauptdateien:

  • Das öffentliche Zertifikat Datei ca.crt Datei, die die Server und Clients verwenden, um zu überprüfen, ob sie sich im gleichen Vertrauensbereich befinden
  • Der private Schlüssel Datei ca.key im pki/private Verzeichnis, in dem die CA die Zertifikate der Server und der Clients signiert

Schritt 4:Öffentliches CA-Zertifikat importieren

Jetzt haben wir das öffentliche Zertifikat generiert, wir müssen es auf einen anderen Server importieren.

Melden Sie sich bei dem Server an, auf dem Sie das Zertifikat importieren möchten, und erstellen Sie dann eine Remote-Kopie von ca.crt Datei vom CA-Server.

scp [email protected]:/opt/easy-rsa/pki/ca.crt
The authenticity of host 'X.Y.Z.T (X.Y.Z.T)' can't be established.
 ECDSA key fingerprint is SHA256:ffUgP5/d0Z3miOKqxBVoF9JbFvIZFs/gxr7ESBZ0kmQ.
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added '139.177.204.145' (ECDSA) to the list of known hosts.
 [email protected]'s password: 
 ca.crt                                                                                                           100%  749     2.4KB/s   00:00

Verschieben Sie die Zertifikatsdatei nach /usr/local/share/ca-certificates/ Verzeichnis:

sudo mv ca.crt /usr/local/share/ca-certificates/

Importieren Sie nun das Zertifikat des CA-Servers mit dem folgenden Befehl:

sudo update-ca-certificates
Updating certificates in /etc/ssl/certs…
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…
done.

Damit vertraut Ihr Server nun den Zertifikaten, die von Ihrem CA-Server signiert wurden.

Schritt 5:Erstellen Sie die Serverzertifikatanforderung und den privaten Schlüssel

Wir können einige Certificate Signing Requests (CSR) auf einem anderen Server erstellen, damit unsere Zertifizierungsstelle diese Anforderungen signiert.

Wir werden OpenSSL verwenden, um eine CSR-Datei zu erstellen. Wenn OpenSSL nicht installiert ist, installieren Sie es mit dem folgenden Befehl:

sudo apt install openssl

Erstellen Sie ein Verzeichnis namens server1-csr, um die CSR und den privaten Schlüssel aufzubewahren

mkdir server1-csr

Wechseln Sie in das server1-csr-Verzeichnis

cd server1-csr

Generieren Sie nun den privaten Schlüssel mit OpenSSL:

openssl genrsa -out server1.key
Generating RSA private key, 2048 bit long modulus (2 primes)
..........+++++
..................................................+++++
e is 65537 (0x010001)

Sie können den entsprechenden CSR mit dem generierten Schlüssel generieren:

$ openssl req -new -key server1.key -out server1.req
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CM
State or Province Name (full name) [Some-State]:CE
Locality Name (eg, city) []:Yaounde
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LinuxShare
Organizational Unit Name (eg, section) []:Tech-B
Common Name (e.g. server FQDN or YOUR name) []:server1
Email Address []:

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

Jetzt müssen Sie die CSR-Datei auf den CA-Server kopieren:

$ scp server1.req scp [email protected]:/tmp/server1.req

Schritt 6:Signieren Sie die Server-CSR auf dem CA-Server

Die generierte CSR sollte vom CA-Server signiert werden. Wechseln Sie dazu zunächst in das easy-rsa-Verzeichnis, um die Zertifikatsignierungsanforderung des Servers zu importieren.

./easyrsa import-req /opt/sign-cert/server1.req server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
The request has been successfully imported with a short name of: server1
You may now use this name to perform signing operations on this request.

Signieren Sie nun die CSR mit dem folgenden Befehl:

./easyrsa sign-req server server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
 You 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               = CM
     stateOrProvinceName       = CE
     localityName              = Yaounde
     organizationName          = LinuxShare
     organizationalUnitName    = Tech-B
     commonName                = server1
 Type the word 'yes' to continue, or any other input to abort.
   Confirm request details: yes
 Using configuration from /opt/easy-rsa/pki/easy-rsa-161486.BI2HwH/tmp.lIqZoF
 Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows
 countryName           :PRINTABLE:'CM'
 stateOrProvinceName   :ASN.1 12:'CE'
 localityName          :ASN.1 12:'Yaounde'
 organizationName      :ASN.1 12:'LinuxShare'
 organizationalUnitName:ASN.1 12:'Tech-B'
 commonName            :ASN.1 12:'server1'
 Certificate is to be certified until Jan  5 16:57:26 2024 GMT (825 days)
 Write out database with 1 new entries
 Data Base Updated
 Certificate created at: /opt/easy-rsa/pki/issued/server1.crt

In der Ausgabe können Sie das ausgestellte Zertifikat im Verzeichnis /opt/easy-rsa/pki/issued/ sehen. Sie können das Zertifikat auch überprüfen, indem Sie es auflisten:

$ ls -l /opt/easy-rsa/pki/issued

Ausgabe:

total 4
 -rw------- 1 franck franck 3996 Oct  2 16:57 server1.crt

Mit all diesen Schritten sind Sie in der Lage, Ihre Zertifikate für Ihre internen Server selbst zu verwalten. Mit Ihrem CA-Server können Sie die Zertifikate für Ihre Webserver oder für einen VPN-Tunnel zum Beispiel mit OpenVPN signieren.

Hinweis:Aus Sicherheitsgründen wird empfohlen, keine anderen Dienste auf einem CA-Server auszuführen. Er sollte nur zum Importieren, Signieren und Widerrufen von Zertifikatsanforderungen als eigenständiger Server verwendet werden.

Schlussfolgerung

In diesem Tutorial haben wir gelernt, wie man eine private Zertifizierungsstelle (CA) unter Ubuntu 20.04 erstellt. Vielen Dank fürs Lesen. Bitte geben Sie Ihr Feedback und Ihre Vorschläge im Kommentarbereich ein.


Ubuntu
  1. So erstellen Sie Ubuntu Live USB in Windows

  2. So erstellen Sie einen Ubuntu-Repository-Server

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

  4. So installieren Sie EPrints unter Ubuntu 20.04

  5. So erstellen Sie ein selbstsigniertes SSL-Zertifikat unter Ubuntu 18.04

So erstellen Sie Desktop-Verknüpfungen unter Ubuntu

So erstellen Sie einen Sudo-Benutzer in Ubuntu Linux

So erstellen Sie Fedora Live USB in Ubuntu

So erstellen Sie eine Diashow mit Fotos in Ubuntu

So erstellen Sie einen bootfähigen Ubuntu USB

So erstellen Sie einen Minecraft-Server unter Ubuntu 20.04