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

Integration von CFSSL mit dem Lemur Certificate Manager

Im vorherigen Artikel zum Lemur-Zertifikatsmanager haben wir keine Stammzertifizierungsstelle (CA) eines Drittanbieters für die Clientzertifikate verwendet. Daher wird PKI in diesem Tutorial mit CFSSL (SSL von Cloudflare) eingerichtet und in das Lemur-Projekt integriert. Derzeit gibt es kein Dokument, das dem Benutzer hilft, CFSSL in das Lemur-Setup zu integrieren.

Hinweis:Da wir CFSSL als Root-Autorität eines Drittanbieters verwenden, müssen wir es zuerst auf einem separaten Computer einrichten (wir richten es jedoch auf derselben Lemur-Box ein) und danach die Lemur-Konf-Datei ändern, um CFSSL für die zu verwenden Unterzeichnung des Zertifikats.

Installation von CFSSL

Das CloudFlare-SSL wird mithilfe der Programmiersprache „Go“ implementiert, sodass die Installation des Pakets „go“ auf dem Computer erforderlich ist. Der folgende Befehl installiert das erforderliche Paket auf dem Computer.

1. Installieren Sie Go 

Das Go-Paket wird aus dem Quellcode installiert.

wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz 

Extrahieren Sie das heruntergeladene Archiv und installieren Sie es am gewünschten Ort auf dem System. Wir installieren es im Verzeichnis /usr/local. Sie können dies auch unter dem gewünschten Ort auf dem System ablegen.

tar -xzvf go1.10.1.linux-amd64.tar.gz
mv go /usr/local

Nach der Installation des Go-Pakets muss außerdem eine Umgebungsvariable für die Go-Binärdatei festgelegt werden. (Sie können es im Benutzerprofil hinzufügen, also machen Sie es zu einer dauerhaften Einstellung). Normalerweise müssen Sie drei Umgebungsvariablen als GOROOT festlegen , GOPATH und PFAD .

GOROOT ist der Ort, an dem das Go-Paket auf Ihrem System installiert ist.

export GOROOT=/usr/local/go

GOPATH ist der Speicherort Ihres Arbeitsverzeichnisses.

export GOPATH=$HOME/go

Legen Sie nun den PFAD fest Variable für den systemweiten Zugriff auf die Binärdatei.

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

2. Go-Befehl testen

Geben Sie nun im Terminal den Befehl „go“ ein. Die Ausgabe wird wie im folgenden Screenshot angezeigt.

go

3. Installieren Sie CFSSL

Wir müssen CFSSL auf dieser Ubuntu-Plattform installieren. Wenn die erforderlichen Umgebungsvariablen für GO richtig eingestellt sind, wird der CFSSL-Installationsprozess einfach sein.

a. Der folgende Befehl lädt das CFSSL-Dienstprogramm herunter und erstellt es im Pfad $GOPATH/bin/.

go get -u github.com/cloudflare/cfssl/cmd/cfssl

b. Der folgende Befehl installiert das JSON-Plugin des CFSSL-Pakets. Es ist erforderlich, da CFSSL JSON-Anforderungen verarbeitet.

 go get -u github.com/cloudflare/cfssl/cmd/cfssljson

c. Installieren Sie einfach alle Programme von CFSSL mit dem unten angegebenen Befehl. Dieser Befehl lädt alle Dienstprogramme (unter anderem cfssl, cfssljson und mkbundle) herunter, erstellt sie und installiert sie im Verzeichnis $GOPATH/bin/.

go get -u github.com/cloudflare/cfssl/cmd/...

Führen Sie, wie unten gezeigt, den Befehl „cfssl“ im Terminal aus, und es werden alle von der CFSSL-PKI unterstützten Vorgänge angezeigt.

CFSSL-PKI-Setup

Jetzt wird die cfssl-Anwendung verwendet, um PKI für das Lemur-Projekt einzurichten. Die Konfigurationsdateien „CSR_configuration“ und „signing_configuration“ sind wichtig für das CFSSL-Setup. Die Konfigurationsdatei „CSR“ enthält die Konfiguration für das Schlüsselpaar, das Sie gerade erstellen, und die Konfiguration „Signieren“, wie der Name schon sagt, richtet die Konfigurationsregeln ein.

ROOT-CA erstellen

Prüfen Sie für die Root-CA die folgende CSR-Konfigurationsdatei (die wir csr_ROOT_CA.json nennen):

  • csr_ROOT_CA.json
 {
 "CN": "MY-ROOT-CA",
 "key": {
    "algo": "ecdsa",
    "size": 256
 },
 "names": [
 {
    "C": "UK",
    "L": "London",
    "O": "My Organisation",
    "OU": "My Organisational Unit Inside My Organisation"
 }
 ],
 "ca": {
    "expiry": "262800h"
 }
}

Nachfolgend finden Sie eine kurze Erläuterung der verschiedenen Felder.

  • Die Konfigurationsdatei folgt dem X.509-Benennungsschema, daher sind die folgenden Felder erforderlich:
    • CN (Common Name) – Der Name der Entität. Im Fall der Root-CA ist dies der Root-CA-Name;
    • C (Land)
    • L (Standort)
    • O (Organisation)
    • OU (Organisationseinheit)
  • Nun, eine Reihe spezifischer Felder sind spezifisch für CFSSL:
    • KEY – Definiert die Schlüsseleigenschaften:
      • Algo – Gibt den Algorithmus an. Kann „rsa“ oder „ecdsa“ für RSA- bzw. ECDSA-Algorithmen sein. Jetzt wird ECDSA immer dann empfohlen, wenn Legacy-Geräte nicht relevant sind, aber das gilt nur für Geräte, die weniger als zwei oder drei Jahre alt sind. Andernfalls ist RSA zu verwenden.
      • size – Gibt die Schlüsselgröße an. 256 soll für den ecdsa-Schlüssel verwendet werden. Für RSA-Schlüssel sind 2048 oder 4096 die empfohlenen Werte.
    • ca – Definiert die CA-Merkmale und in diesem Fall die Schlüsselgültigkeit, in Stunden, ja, in Stunden. In diesem Fall sind es 30 Jahre (24x356x30), da die Root-Autorität so lange dauern soll, wie Sie die Sicherheit des Root-Schlüssels vorausgesehen haben.

Führen Sie nun den folgenden Befehl aus, um die Root-CA für den Lemur tatsächlich zu erstellen.

cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca

Der obige Befehl erstellt die folgenden Dateien auf dem Computer.

  • root_ca.csr – Die Anforderung zum Signieren des Zertifikats der Root-CA, die für die Root-CA keinen Sinn ergibt und daher niemals verwendet wird. Da die Root-CA selbstsigniert ist.
  • root_ca.pem – Das Root-CA-Zertifikat. Dies ist die Datei, die Sie so weit wie möglich verteilen.
  • root_ca.key – Dies ist der Root-CA-Schlüssel. Bewahren Sie diese Datei sicher auf, als ob Ihr Leben davon abhängt. Für eine öffentliche Root-CA ist dies tatsächlich die Wahrheit.

Die Stammzertifizierungsstelle ist selbstsigniert, fahren Sie also mit dem nächsten Schritt zur Generierung einer Zwischenzertifizierungsstelle fort.

Zwischenzertifizierungsstelle

Die Generierung von Intermediate CA ist nicht verpflichtend, entspricht aber einer Best Practice. Das Endziel einer Zwischenzertifizierungsstelle ist ein Zwischenschritt in Bezug auf die Sicherheit. Meistens. Der Root-CA-Schlüssel wird auf einem Offline-Rechner aufbewahrt und nur verwendet, wenn Sie ein CA-Zwischenzertifikat signieren müssen.

Die Konfigurationsdatei „csr_INTERMEDIATE_CA.json“ wird benötigt, um eine Zwischen-CA zu erstellen.

  • csr_INTERMEDIATE_CA.json – Die Zertifikatsignieranforderung für die Zwischenzertifizierungsstelle
{
 "CN": "My-Intermediate-CA",
 "key": {
    "algo": "ecdsa",
    "size": 256
 },
 "names": [
 {
    "C": "UK",
    "L": "London",
    "O": "My Organisation",
    "OU": "My Organisational Unit Inside My Organisation"
 }
 ],
 "ca": {
    "expiry": "42720h"
 }
}

Die Datei „root_to_intermediate_ca.json“ enthält die Root-CA-Signaturkonfiguration.

{ 
"signing": { "default": { "usages": ["digital signature","cert sign","crl sign","signing"], "expiry": "262800h", "ca_constraint": {"is_ca": true, "max_path_len":0, "max_path_len_zero": true} } } }

Diese Datei enthält die wichtigsten Parameter für ein Zertifikat.

  • Verwendungen – Welche Verwendungen dürfen von dem zu signierenden Zertifikat durchgeführt werden? Folgende Optionen werden von CFSSL unterstützt:
    • "digitale Signatur",
    • "Zertifikatszeichen",
    • "crl-Zeichen",
    • "unterzeichnen"
    • usw.
  • is_ca – dieses Feld gilt nur für die Generierung von Intermedia-CA-Zertifikaten und ermöglicht es dem generierten Zertifikat, andere Zertifikate zu signieren. Wenn Sie dieses Feld auf einem Endgerätezertifikat belassen, wird es von den meisten gängigen Browsern und Betriebssystemen abgelehnt.

Der folgende Befehl erstellt eine Zwischenzertifizierungsstelle für die oben genannte Konfiguration.

cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare intermediate_ca

Der obige Befehl erstellt die folgenden Dateien der Intermediate CA.

  • intermediate_ca.csr – Die Intermediate-CA-Zertifikat-Signierungsanforderung.
  • intermediate_ca.pem – Das Intermediate-CA-Zertifikat, von niemandem signiert und daher nutzlos.
  • intermediate_ca.key – Dies ist der CA-Zwischenschlüssel. Bewahren Sie diese Datei sicher auf.

Der folgende Befehl zeigt die Signierung des Zwischen-CA-Zertifikats durch die Root-CA.

cfssl sign -ca root_ca.pem -ca-key root_ca-key.pem -config root_to_intermediate_ca.json intermediate_ca.csr | cfssljson -bare intermediate_ca

Der obige Befehl signiert die Datei „intermediate_ca.pem“. Damit ist die Einstellung der Root- und Intermediate-CA abgeschlossen. Es ist wichtig, Root-CA-Schlüssel und Konfigurationsdateien sicher aufzubewahren. Der nächste Schritt besteht darin, ein Zertifikat für das Clientgerät oder den Kunden zu erstellen. Hier integrieren wir das CFSSL-Setup in das Lemur-Projekt und das Zertifikat des Clients wird generiert.

PKI von CFSSL ausführen

Um die CFSSL-basierte PKI auszuführen, gehen Sie in das certs-Verzeichnis und führen Sie den folgenden Befehl aus.

cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888

Die Ausgabe des obigen Befehls folgt.

[email protected]:/home/john/Desktop/certs# cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888
2018/05/20 16:35:18 [INFO] Initializing signer
2018/05/20 16:35:19 [WARNING] couldn't initialize ocsp signer: open : no such file or directory
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scaninfo' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'ocspsign' is disabled: signer not initialized
2018/05/20 16:35:19 [INFO] endpoint '/' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/info' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/gencrl' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scan' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'crl' is disabled: cert db not configured (missing -db-config)
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/certinfo' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'revoke' is disabled: cert db not configured (missing -db-config)
2018/05/20 16:35:19 [INFO] bundler API ready
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/bundle' is enabled
2018/05/20 16:35:19 [INFO] setting up key / CSR generator
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newkey' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/init_ca' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/sign' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'authsign' is disabled: {"code":5200,"message":"Invalid or unknown policy"}
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newcert' is enabled
2018/05/20 16:35:19 [INFO] Handler set up complete.
2018/05/20 16:35:19 [INFO] Now listening on 192.168.10.151:8888

Die IP-Adresse der Maschine ist 192.168.10.151 und Port ist 8888 . Erlauben Sie diesem Port in der Firewall, CFSSL zu verwenden.

HINWEIS:Der folgende Befehl führt nur zur Verwendung des Dienstprogramms cfssl.

{ cfssl serve [-address address] [-ca cert] [-ca-bundle bundle] \
[-ca-key key] [-int-bundle bundle] [-int-dir dir] [-port port] \
[-metadata file] [-remote remote_host] [-config config] \
[-responder cert] [-responder-key key] [-db-config db-config] }

Jetzt ist die Konfiguration des CFSSL abgeschlossen und es läuft auf der Maschine. Der nächste Schritt ist die Integration von CFSSL mit Lemur.

Lemur-Konfiguration für die PKI von CFSSL

Nun wird die Konfigurationsdatei „lemur.conf.py“ des Lemur modifiziert (wie URL, ROOT und Zwischenschlüssel). Die Konfigurationsdatei enthält die Informationen über das CFSSL. Der Pfad der Lemur-Konfigurationsdatei lautet „/home/lemur/.lemur/lemur.conf.py“.

CFSSL_URL ="http://192.168.10.151:8888"
CFSSL_ROOT ="""-----BEGIN CERTIFICATE-----
MIICcjCCAhegAwIBAgIUahfYPc4RpK92G1ZHhu3q9URvf+8wCgYIKoZIzj0EAwIw
9UmEM4IEd2j8/w4WdTYaBE5EzwIhAN3oW9iAmjcyzC/7BPIY/Sr+twig/+XwnQ8T
hKXP2OHd
-----END CERTIFICATE-----"""
CFSSL_INTERMEDIATE ="""-----BEGIN CERTIFICATE-----
MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw
qM9lE82tku/b6SMxAlBByQ==
-----END CERTIFICATE-----"""

Führen Sie nun den Befehl „lemur start“ aus, um die lemur.conf.py mit der CFSSL-Einstellung zu verwenden.

Zertifikate mit CFSSL erstellen

Indem Sie unserem vorherigen Artikel über Lemur folgen, greifen Sie auf das Dashboard zu, um Client-Zertifikate mit Root-CA von CFSSL zu erstellen. Erstellen Sie zunächst eine neue Zertifizierungsstelle und wählen Sie das Plugin CFSSL als Root-CA aus.

1. Einstellen verschiedener Parameter der neuen Behörde.

2. Wählen Sie das neu eingerichtete CFSSL-Plugin als Root-CA aus.

Nachdem Sie die neue Zertifizierungsstelle im Lemur eingerichtet haben, besteht der nächste Schritt darin, mithilfe des neu eingerichteten CFSSL-Plug-ins ein Zertifikat zu generieren.


Linux
  1. Lernen Sie die Shortcuts des i3-Linux-Window-Managers kennen

  2. Erste Schritte mit dem Plesk File Manager

  3. Deaktivieren Sie die Anmeldung mit dem Root-Konto

  4. Fehler beim Signieren von CSR mit dem Ca-Stammschlüssel?

  5. Die Zeichen jeder Zeile mit Wc zählen?

Installation von Lemur Certificate Manager auf Ubuntu

Die Erstellung von Benutzer, Zertifikat und Signierung von CSR für Lemur Certificate Manager

Erste Schritte mit Nix Package Manager

Zertifizierungsstelle mit OpenSSL

Network Manager unter Linux mit Beispielen

Bearbeiten von Dateien mit dem Plesk Control Panel-Dateimanager