Signaturserver installieren

Hub speichert sensible Informationen wie Seeds. Um eine zusätzliche Sicherheitsebene hinzuzufügen, können Sie vertrauliche Vorgänge und Daten auf einen Signierungsserver verschieben, zu dem nur Hub eine Verbindung herstellen kann.

Für dieses Handbuch verwenden Sie eine neue Installation von Ubuntu 18.04 LTS.

Gehen Sie folgendermaßen vor, um mit Hub zu beginnen:

  1. Installieren Sie die Abhängigkeiten
  2. Erstellen Sie den Signaturserver
  3. Generieren Sie SSL-Zertifikate
  4. Führen Sie den Signaturserver aus
  5. Verbinden Sie den Hub mit dem signierenden Server

Der Signierungsserver muss anhand der Abhängigkeiten aus der Quelle kompiliert werden.

1. Stellen Sie sicher, dass das lokale apt-Repository auf dem neuesten Stand ist und das Multiversum-Repository enthält

sudo apt update

2. Installieren Sie einen Compiler wie GCC, Clang oder eine Toolchain von @iota_toolchains

sudo apt install gcc-7

3. Installieren Sie die Abhängigkeiten für das binäre Bazel-Installationsprogramm

sudo apt install pkg-config zip g++ zlib1g-dev unzip python

4. Laden Sie das binäre Installationsprogramm für die neueste Version von Bazel herunter

wget https://github.com/bazelbuild/bazel/releases/download/0.18.0/bazel-0.18.0-installer-linux-x86_64.sh

5. Stellen Sie sicher, dass Sie das Installationsskript ausführen können

chmod +x bazel-0.18.0-installer-linux-x86_64.sh

6. Installieren Sie Bazel unter Ihrem aktiven Benutzer mit dem Flag –user:

./bazel-0.18.0-installer-linux-x86_64.sh --user

7. Installieren Sie das pyparsing Paket für Python

sudo apt install python-pyparsing

8. Installieren Sie Git

sudo apt install git

Klonen Sie das GitHub-Repository

```shell
git clone https://github.com/iotaledger/rpchub.git
```

1. Wechseln Sie in das hub Verzeichnis

cd hub

2. Erstellen Sie den Hub aus dem Quellcode:

bazel build -c opt //signing_server

Dieser Vorgang kann je nach Hardware oder virtueller Maschine eine Weile dauern.

Nachdem der Build abgeschlossen ist, sollte die Ausgabe etwa Folgendes anzeigen:

Target //signing_server:signing_server up-to-date:
    bazel-bin/signing_server/signing_server
INFO: Elapsed time: 1250.848s, Critical Path: 19.29s
INFO: 1283 processes: 1283 linux-sandbox.
INFO: Build completed successfully, 1412 total actions

SSL-Zertifikate werden für die sichere Kommunikation zwischen Ihrem Hub und dem Signaturserver verwendet. Das Hub-Repository enthält einige Skripts zum Generieren der Zertifikate.

1. Öffnen Sie die Datei generate_ca.sh

nano docs/ssl/01_generate_ca.sh

Die Gültigkeit für das CA-Zertifikat ist auf 365 Tage festgelegt. Lassen Sie uns das auf 9999 Tage aufrüsten, damit es nicht so bald abläuft:

1. Um das Ablaufdatum des Zertifikats zu erhöhen, ersetzen Sie -days 365 durch -days 9999. Speichern Sie die Datei

2. Überprüfen Sie den Hostnamen für den signierenden Server. Im Beispiel ist der Hostname signer. Sie können Ihren Hostnamen überprüfen, indem Sie den Befehl hostname in Ihrer Shell ausführen.

3. Öffnen Sie die Generator-Datei

nano docs/ssl/02_generate_server.sh

4. Ersetzen Sie -days 365 durch -days 9999

5. Ändern Sie den Parameter -subj so, dass der CN=localhost Teil den Hostnamen des signierenden Servers enthält, z. B. CN=signer. Speicher die Datei.

Der Befehl openssl req sollte etwa Folgendes ausgeben:

openssl req -passin pass:1234 -new -key server.key -out server.csr -subj "/C=DE/ST=Berlin/L=Berlin/O=HUB/OU=Server/CN=signer"

1. Öffnen Sie die Datei generate_client

nano docs/ssl/03_generate_client.sh

2. Ersetzen Sie -days 365 durch -days 9999

3. Ändern Sie den Parameter -subj so, dass der CN=localhost Teil den Hostnamen des signierenden Servers enthält, z. B. CN=signer. Speicher die Datei.

4.Führen Sie alle drei Skripte aus

docs/ssl/01_generate_ca.sh
docs/ssl/02_generate_server.sh
docs/ssl/03_generate_client.sh

Sie sollten jetzt einige SSL-Server- und Client-Zertifikate zur Verwendung bereithalten!

Um den Signierungsserver auszuführen, müssen Sie die Binärdatei ausführen, die während des Erstellungsprozesses erstellt wurde. Diese binäre Datei befindet sich im Verzeichnis ./bazel-bin/signing_server/signing_server.

Bevor Sie die Binärdatei ausführen können, müssen Sie sie konfigurieren.

1. Erstellen Sie ein Shell-Skript namens start.sh

nano start.sh

2. Fügen Sie in der Datei start.sh den Befehl zum Ausführen des Signaturservers mit den Konfigurationsoptionen hinzu

#!/bin/bash

./bazel-bin/signing_server/signing_server \
--salt CHANGETHIS \
--authMode ssl \
--authMode=ssl \
--sslKey server.key \
-sslCert server.crt \
--sslCA ca.crt \
--listenAddress 0.0.0.0:50051

Hinweis: Verwenden Sie dasselbe Salz wie das Salz, das Sie in der Hub-Konfiguration verwendet haben.

1. Machen Sie die start.sh-Datei ausführbar

chmod a+x start.sh

2. Starten Sie den Signaturserver

./start.sh

Herzlichen Glückwunsch 🎉 Der Signier-Server läuft jetzt auf Ihrem Computer!

Anmerkung: Sie führen derzeit den Signaturserver in Ihrer Shell-Sitzung aus. Wenn Sie diese Sitzung schließen, wird der Server angehalten. Daher möchten Sie möglicherweise in Erwägung ziehen, den Signierungsserver in einer screen / tmux-Sitzung, einem systemweiten Dienst oder einem überwachten Prozess auszuführen.

In diesem Lernprogramm verwenden Sie Supervisor, um sicherzustellen, dass der Signierungsserver nach einem Neustart oder einem Absturz automatisch ausgeführt wird und automatisch neu startet.

1. Supervisor installieren (STRG + C drücken) um die aktuelle Shell-Sitzung zu beenden):

sudo apt install supervisor

2. Erstellen Sie eine Konfigurationsdatei für Supervisor

sudo nano /etc/supervisor/conf.d/signing.conf

3. Fügen Sie der signing.conf-Datei die folgenden Zeilen hinzu:

[program:hub]
command=/home/dave/hub/start.sh
directory=/home/dave/hub/
user=dave
autostart=true
autorestart=true
stderr_logfile=/home/dave/hub/err.log
stdout_logfile=/home/dave/hub/info.log

Anmerkung: Ändern Sie den Wert des user Parameter und stellen Sie sicher, dass die Pfade in den Parametern command, directory, stderr_logfile und stdout_logfile korrekt sind.

1. Speichern Sie die signing.conf-Datei und laden Sie den Supervisor erneut

sudo supervisorctl reload

Der Signierungsserver sollte jetzt im Hintergrund ausgeführt werden und nach einem Neustart des Servers oder einem Absturz automatisch neu gestartet werden.

1. Überprüfen Sie den Supervisor-Status

sudo supervisorctl status

Die Ausgabe sollte ungefähr so aussehen:

signing                          RUNNING   pid 11740, uptime 0:00:02

Jetzt müssen Sie den Hub mit dem Signing-Server verbinden.

Verbinden Sie den Hub mit dem signierenden Server

Im Hub-Server müssen Sie die generierten SSL-Zertifikate importieren und das start.sh-Skript bearbeiten, um sie verwenden zu können.

1. Kopieren Sie die Zertifikatsdateien (client.crt, client.key und ca.crt) auf den Hub-Server. Sie können dies auf jede Weise tun, die Sie bevorzugen. Senden Sie sie in diesem Beispiel mit dem Befehl scp über SSH

scp client.crt client.key ca.crt 192.168.2.212:/home/dave/hub/

Hinweis: Ändern Sie 192.168.2.212 in die URL oder IP-Adresse Ihres Hub-Servers. Ändern Sie das Verzeichnis /home/dave/hub/ in den Pfad, in dem Ihr Hub installiert ist.

Die Ausgabe sollte etwa Folgendes anzeigen:

client.crt                                                                    100% 1887     1.6MB/s   00:00
client.key                                                                    100% 3243     3.0MB/s   00:00
ca.crt                                                                        100% 2029     1.9MB/s   00:00

1. Erstellen Sie eine neue Datei

sudo nano /etc/hosts

2. Ordnen Sie in dieser Datei den Hostnamen des signierenden Servers seiner IP-Adresse zu

192.168.2.210   signer

Hinweis: Ändern Sie 192.168.2.210 in die IP-Adresse Ihres Signierungsservers. Ändern Sie den Unterzeichner in den Hostnamen Ihres Signaturservers.

1. Öffnen Sie die Datei start.sh

nano start.sh

2. Entfernen Sie den Parameter –salt. Dieser Parameter wird hier nicht mehr benötigt, da der signierende Server es hat. Sie sollten auch auf den signierenden Server (signer:50051) und die zu verwendenden SSL-Zertifikate verweisen.

#!/bin/bash

./bazel-bin/hub/hub \
--db hub \
--dbUser root \
--dbPassword testingtesting123 \
--apiAddress 192.168.2.71:14265 \
--minWeightMagnitude 14 \
--listenAddress 127.0.0.1:50051 \
--signingMode remote \
--signingProviderAddress signer:50051 \
--signingServerChainCert client.crt \
--signingServerKeyCert client.key \
--signingServerSslCert ca.crt

3. Speichern Sie die Datei start.sh und starten Sie Hub neu

sudo supervisorctl restart hub

Wenn alles gut gelaufen ist, sollten Sie Hub und einen signierenden Server einsatzbereit haben. Der Salt ist nicht mehr auf dem gleichen Server wie Ihr Hub!

Stellen Sie sicher, dass Ihr Signier-Server über eine Firewall-Whitelist verfügt. Je weniger externe Dienste verfügbar sind, desto weniger anfällig sind Sie. Es gelten allgemeine Server-Sicherheitsregeln.


Anmerkung:

Der Inhalt kann durch die Übersetzung verfälscht sein. Im Zweifel gilt das englische Original von der IOTA Foundation.

Quelle: https://docs.iota.org/docs/hub/0.1/how-to-guides/install-the-signing-server

  • Zuletzt geändert: 2019/02/10 15:01
  • von thoralf