Kategorien
Unix Web

Erstellen Sie eine Public-Key-Infrastruktur mit Hilfe der easy-rsa Scripts

Der erste Schritt bei der Einrichtung OpenVPN ist eine zu erstellen Public Key Infrastructure (PKI). Die PKI besteht aus:

  • Ein öffentlicher Master Zertifizierungsstelle (CA) Zertifikat und einen privaten Schlüssel.
  • Eine separate öffentliche Zertifikat und einen privaten Schlüssel (im Folgenden als Zertifikat bezeichnet) für jeden Server und jeder Client.

Um das Zertifikat Erstellungsprozess erleichtern, OpenVPN kommt mit einer Sammlung von RSA Schlüssel manangement Skripte (basierend auf der OpenSSL-Kommandozeilen-Tool) bekannt als easy-rsa.

Hinweis: Nur .key-Dateien müssen geheim gehalten werden, .CRT- und .csr-Dateien können über unsichere Kanäle wie Text-E-Mail gesendet werden.

In diesem Artikel werden die benötigten Zertifikate werden von Wurzel im Stammverzeichnis des erstellt. Dadurch wird sichergestellt, dass die erzeugten Dateien den richtigen Eigentümer und Berechtigungen haben, und sind sicher von anderen Benutzern.

Hinweis: Die Zertifikate können auf jeder Maschine erstellt werden. Für die höchste Sicherheit, die Zertifikate auf einem physisch sicheren Maschine erzeugen aus jedem Netz getrennt, und stellen Sie sicher, dass die erzeugte ca.key privaten Schlüssel gesichert und nie für jedermann zugänglich.
Warnung: Stellen Sie sicher, dass die erzeugten Dateien gesichert werden, vor allem die ca.key und ca.crt Dateien, wenn sie verloren gehen, da werden Sie nicht in der Lage, jede neue zu schaffen, noch widerrufen alle kompromittiert Zertifikate, so erfordert die Erzeugung eines neuen Zertifizierungsstelle (CA) Zertifikat, entkräften die gesamte PKI-Infrastruktur.

Installieren der easy-rsa-Skripten

Installieren Sie die Skripte durch folgende Maßnahmen:

# pacman -S easy-rsa
# cp -r / usr / share / easy-rsa / root

Zertifikate erstellen

Wechseln Sie in das Verzeichnis, in dem Sie die Skripte installiert.

# cd / root / easy-rsa

Um die konsequente Nutzung der Werte zu gewährleisten, wenn die PKI-Generierung, Satz Standardwerte durch die PKI-Erzeugungs Skripte verwendet werden. Bearbeiten / root / easy-rsa / VARs und auf ein Minimum KEY_COUNTRY gesetzt, KEY_PROVINCE, KEY_CITY, KEY_ORG, und KEY_EMAIL Parameter (nicht jeder dieser Parameter leer lassen). Ändern Sie den KEY_SIZE Parameter 2048 für die SSL / TLS 2048bit RSA-Schlüssel für die Authentifizierung verwenden.

/root / easy-RSA / Vars
# easy-rsa Parametereinstellungen

# HINWEIS: Wenn Sie von einer RPM installiert,
# diese Datei nicht an Ort und Stelle bearbeitet in
# /usr / share / openvpn / easy-rsa --
# stattdessen, Sie sollten die ganze kopieren
# easy-rsa Verzeichnis an einem anderen Ort
# (wie / etc / OpenVPN-) so dass Ihre
# Änderungen werden nicht von einer Zukunft ausgelöscht
# OpenVPN-Paket Upgrade.

# Diese Variable sollte zeigen auf
# die oberste Ebene des easy-rsa
# Baum.
Export EASY_RSA ="`pwd`"

#
# Diese Variable sollte zeigen auf
# die angeforderten ausführbaren Dateien
#
Export OPENSSL ="openssl"
Export PKCS11TOOL ="pkcs11 Werkzeug"
Export GREP ="grep"

# Diese Variable sollte zeigen auf
# die openssl.cnf-Datei enthalten
# mit easy-rsa.
Export KEY_CONFIG = `$ EASY_RSA / whichopensslcnf $ EASY_RSA`

# Bearbeiten Sie diese Variable verweisen auf
# Ihr soon-to-be-Schlüssel erstellt
# Verzeichnis.
#
# WARNUNG: Rein alles tun
# a rm -rf in diesem Verzeichnis
# so stellen Sie sicher, dass Sie definieren
# es richtig!
Export KEY_DIR ="$EASY_RSA / Tasten"

# Geben Sie rm -rf Warn
Echo HINWEIS: Wenn Sie laufen ./clean-all, Ich werde einen rm -rf auf $ KEY_DIR tun

# PKCS11-Fixes
Export PKCS11_MODULE_PATH ="Attrappe"
Export PKCS11_PIN ="Attrappe"

# Erhöhen Sie dies 2048 wenn du
# sind paranoid.  Dies verlangsamt
# nach unten TLS-Verhandlungen Leistung
# sowie die einmalige DH parms
# Erzeugungsprozess.
Export key_size = 2048

# In wie vielen Tagen sollte der Root-CA-Schlüssel verfallen?
Export CA_EXPIRE = 3650

# In wie viele Tage sollten Zertifikate ablaufen?
Export KEY_EXPIRE = 3650

# Dies sind die Standardwerte für die Felder
# die in dem Zertifikat platziert wird.
# Nicht leer eines dieser Felder verlassen.


Export KEY_COUNTRY ="UNS"
Export KEY_PROVINCE ="CA"
Export KEY_CITY ="Acme Acres"
Export KEY_ORG ="Gipfel"
Export KEY_EMAIL ="roadrunner@acmecorp.org"
#Export KEY_EMAIL=mail@host.domain
Export KEY_CN = Acme-CA
Export KEY_NAME = Acme-CA
= Export KEY_OU""
Export PKCS11_MODULE_PATH = changeme
Export PKCS11_PIN = 1234

Exportieren Sie die Umgebungsvariablen.

# Quelle ./vars

Löschen Sie alle zuvor erstellten Zertifikate.

# ./alles putzen
Hinweis: Die Eingabe eines . (Punkt) wenn für einen Wert aufgefordert, ausblendet den Parameter.

Der Build-Skript CA erzeugt das Zertifizierungsstelle (CA) Zertifikat.

# ./Errichten-wie
Erzeugen eines 2048 Bit RSA Private Key
..............++++++
...++++++
Schreiben neue private Schlüssel zu ‚ca.key‘
-----
Sie sind dabei aufgefordert werden, Informationen einzugeben, die eingearbeitet werden
in der Zertifikatsanforderung.
Was Sie sind im Begriff ist, zu geben, was ein Distinguished Name oder ein DN genannt wird.
Es gibt durchaus ein paar Felder, aber Sie können etwas leer lassen
Für einige Felder wird es ein Standardwert sein,
Bei Eingabe von ‚‘, wird das Feld leer gelassen werden.
-----
Ländername (2 Buchstaben-Code) [UNS]:
Staat oder Provinz-Name (vollständiger Name) [CA]:
Ortsname (z.B, Stadt) [Acme Acres]:
Name der Organisation (z.B, Unternehmen) [Gipfel]:
Name der Organisationseinheit (z.B, Abschnitt) []:
Gemeinsamen Namen (z.B, Ihren Namen oder Ihre Server-Hostnamen) [Acme-CA]:
Name [Acme-CA]:
E-Mail-Addresse [roadrunner@acmecorp.org]:

Der Build-Schlüssel-Server-Skript # ./build-key-server <server name> erzeugt ein Serverzertifikat. Stellen Sie sicher, dass Sie den Servernamen (Common Name beim Ausführen des Skripts) ist einzigartig.

Hinweis: Verwenden Sie keine Herausforderung Passwort oder Firmennamen eingeben, wenn das Skript Sie eine Eingabeaufforderungen.
# ./build-key-Server elmer
Erzeugen eines 2048 Bit RSA Private Key
.....................++++++
.......................................................++++++
Schreiben neue private Schlüssel zu ‚elmer.key‘
-----
Sie sind dabei aufgefordert werden, Informationen einzugeben, die eingearbeitet werden
in der Zertifikatsanforderung.
Was Sie sind im Begriff ist, zu geben, was ein Distinguished Name oder ein DN genannt wird.
Es gibt durchaus ein paar Felder, aber Sie können etwas leer lassen
Für einige Felder wird es ein Standardwert sein,
Bei Eingabe von ‚‘, wird das Feld leer gelassen werden.
-----
Ländername (2 Buchstaben-Code) [UNS]:
Staat oder Provinz-Name (vollständiger Name) [CA]:
Ortsname (z.B, Stadt) [Acme Acres]:
Name der Organisation (z.B, Unternehmen) [Gipfel]:
Name der Organisationseinheit (z.B, Abschnitt) []:
Gemeinsamen Namen (z.B, Ihren Namen oder Ihre Server-Hostnamen) [elmer]:
Name [Acme-CA]:
E-Mail-Addresse [roadrunner@acmecorp.org]:

Bitte geben Sie die folgenden ‚Extra‘ Attribute
geschickt mit Zertifikatsanforderung werden
Eine Herausforderung Passwort []:
Ein optionaler Firmennamen []:
Mit Konfiguration von /root/easy-rsa/openssl-1.0.0.cnf
Überprüfen Sie, ob die Anforderung die Signatur übereinstimmt
Unterschrift ok
Das Thema Distinguished Name ist wie folgt
Ländername           :BEDRUCKBARE:'UNS'
stateOrProvinceName   :BEDRUCKBARE:'CA'
localityName          :BEDRUCKBARE:'Acme Acres'
organization      :BEDRUCKBARE:'Gipfel'
gemeinsamen Namen            :BEDRUCKBARE:'Elmer'
Name                  :BEDRUCKBARE:'Acme-CA'
E-Mail-Addresse          :IA5String:'Roadrunner@acmecorp.org'
Das Zertifikat ist bis Dezember zu zertifizierenden 27 19:11:59 2021 mittlere Greenwich-Zeit (3650 Tage)
Melden Sie das Zertifikat? [y / n]:und

1 aus 1 Zertifikatsanforderungen zertifiziert, verpflichten? [y / n]y
Ausschreiben Datenbank mit 1 neue Einträge
Data Base Aktualisiert

Der Build-Skript erzeugt die AVW Diffie-Hellman-Parameter .pem-Datei vom Server benötigt.

Hinweis: Es wäre besser, ein neues für jeden Server zu erzeugen, Sie können jedoch die gleiche, wenn Sie möchten,.
# ./build-AVW
Erzeugen DH Parameter, 2048 Bit lange sicher prime, Generator 2
Das wird eine lange Zeit in Anspruch nehmen
..+.............................................................................
.
.
.
............+...............+...................................................
..................................................................++*++*

Der Build-key-Skript # ./build-key <client name> erzeugt ein Client-Zertifikat. Stellen Sie sicher, dass die Client-Namen (Common Name beim Ausführen des Skripts) ist einzigartig.

Hinweis: Verwenden Sie keine Herausforderung Passwort oder Firmennamen eingeben, wenn das Skript Sie eine Eingabeaufforderungen.
# ./build-Schlüssel Bugs
Erzeugen eines 2048 Bit RSA Private Key
....++++++
.............................................................++++++
Schreiben neue private Schlüssel zu ‚bugs.key‘
-----
Sie sind dabei aufgefordert werden, Informationen einzugeben, die eingearbeitet werden
in der Zertifikatsanforderung.
Was Sie sind im Begriff ist, zu geben, was ein Distinguished Name oder ein DN genannt wird.
Es gibt durchaus ein paar Felder, aber Sie können etwas leer lassen
Für einige Felder wird es ein Standardwert sein,
Bei Eingabe von ‚‘, wird das Feld leer gelassen werden.
-----
Ländername (2 Buchstaben-Code) [UNS]:
Staat oder Provinz-Name (vollständiger Name) [CA]:
Ortsname (z.B, Stadt) [Acme Acres]:
Name der Organisation (z.B, Unternehmen) [Gipfel]:
Name der Organisationseinheit (z.B, Abschnitt) []:
Gemeinsamen Namen (z.B, Ihren Namen oder Ihre Server-Hostnamen) [Bugs]:
Name [Acme-CA]:
E-Mail-Addresse [roadrunner@acmecorp.org]:

Bitte geben Sie die folgenden ‚Extra‘ Attribute
geschickt mit Zertifikatsanforderung werden
Eine Herausforderung Passwort []:
Ein optionaler Firmennamen []:
Mit Konfiguration von /root/easy-rsa/openssl-1.0.0.cnf
Überprüfen Sie, ob die Anforderung die Signatur übereinstimmt
Unterschrift ok
Das Thema Distinguished Name ist wie folgt
Ländername           :BEDRUCKBARE:'UNS'
stateOrProvinceName   :BEDRUCKBARE:'CA'
localityName          :BEDRUCKBARE:'Acme Acres'
organization      :BEDRUCKBARE:'Gipfel'
gemeinsamen Namen            :BEDRUCKBARE:'Bugs'
Name                  :BEDRUCKBARE:'Acme-CA'
E-Mail-Addresse          :IA5String:'Roadrunner@acmecorp.org'
Das Zertifikat ist bis Dezember zu zertifizierenden 27 19:18:27 2021 mittlere Greenwich-Zeit (3650 Tage)
Melden Sie das Zertifikat? [y / n]:und

1 aus 1 Zertifikatsanforderungen zertifiziert, verpflichten? [y / n]y
Ausschreiben Datenbank mit 1 neue Einträge
Data Base Aktualisiert

Generieren Sie ein Geheimnis Hash-basierte Message Authentication Code (HMAC) durch laufen: # openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Dies wird verwendet, um eine zusätzliche HMAC-Signatur für alle SSL / TLS Handshake-Pakete hinzufügen. Darüber hinaus wird sofort gelöscht werden, jede UDP-Paket nicht die richtige HMAC-Signatur mit, Schutz vor:

  • Portscanning.
  • DoS-Angriffe auf dem OpenVPN UDP-Port.
  • SSL / TLS-Handshake Einweihungen von nicht autorisierten Maschinen.
  • Eventuelle Pufferüberlauf-Schwachstellen in der SSL / TLS-Implementierung.

Alle erstellten Schlüssel und Zertifikate in / root / easy-rsa / Schlüssel gespeichert. Wenn Sie einen Fehler machen,, Sie können wieder durch Ausführen des Rein alle Skript neu anfangen.

Warnung: Dadurch werden alle zuvor generierten Zertifikate in / root / easy-rsa / Schlüssel gespeichert löschen, einschließlich der Zertifizierungsstelle (CA) Zertifikat.

Konvertieren von Zertifikaten verschlüsselt P12-Format

Einige Software (wie Android) nur VPN-Zertifikate zu lesen, die in einem Passwort-verschlüsselten P12-Datei gespeichert werden. Diese können mit dem folgenden Befehl generiert werden:

# openssl pkcs12 -export -inkey Tasten / bugs.key -in Tasten / bugs.crt -certfile Tasten / ca.crt -out Tasten / bugs.p12

Überprüfen OpenSSL

Wenn Sie benötigen die Informationen innerhalb eines Zertifikats zu überprüfen, CSR oder Private Key, Verwenden Sie diese Befehle. Du kannst auch überprüfen CSRs und prüfen Sie die Zertifikate mit unserem Online-Tools.

  • Prüfen Sie den Certificate Signing Request (CSR)
    openssl req -Text -noout -verify -in CSR.csr
  • Überprüfen Sie einen privaten Schlüssel
    openssl rsa -in privateKey.key -prüfen
  • Prüfen Sie ein Zertifikat
    openssl x509 -in certificate.crt -Text -noout
  • Überprüfen Sie eine PKCS # 12-Datei (.pfx oder P12)
    openssl pkcs12 -info -in keystore.p12

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.