Eingeschränkter Zugriff/Authentifizierung für einen entfernten Geth-Knoten

Ich habe Remote-Geth-Knoten eingerichtet, die ständig als Web3-Anbieter ausgeführt werden, um meine DApp zu unterstützen.

Was ist der beste Weg, um den Zugriff einzuschränken, um sicherzustellen, dass nur autorisierte Clients (mein Server) eine Verbindung zu diesem Geth-Knoten herstellen?

Beispielsweise benötigt infura einen Zugangsschlüssel für Benutzer: https://mainnet.infura.io/{ACCESS_KEY} .

Wie würde ich so etwas für meinen Geth-Knoten einrichten?

Der RPC-Port des Geth-Knotens ist 8545 und ich verwende einen Nginx-Reverse-Proxy, um eine SSL/TLS-Verbindung auf Port 443 bereitzustellen, da meine DApp gesichert ist (https).

Antworten (1)

OK, ich habe das herausgefunden, indem ich grundlegende HTTP/HTTPs-Authentifizierung verwendet habe. Posting, falls es jemandem weiterhilft:

  1. AWS: eingehender TCP-Zugriff auf Port 8545 deaktiviert (in AWS-Sicherheitsgruppen)
  2. auth_basicIn nginx hinzugefügt
  3. Wird verwendet openssl, um eine Kennwortdatei zu erstellen
  4. Neue web3-URL:https://<USERNAME>:<PASSWORD>@mydomain.com:443

nginx-Konfiguration

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    # ADDED THESE TWO LINES FOR AUTHENTICATION
    auth_basic "Protected Geth";
    auth_basic_user_file /path/to/passwords;

    server_name subdomain.mydomain.com;

    ssl                 on;
    ssl_certificate     /path/to/mydomain-bundle.crt;
    ssl_certificate_key /path/to/mydomain.key;
    #ssl_session_cache  shared:SSL:10m;

    location / {
      proxy_pass http://localhost:8545;
      proxy_set_header Host $host;
      proxy_redirect http:// https://;
    }
}

Passwortdatei erstellen

printf "<USERNAME>:$(openssl passwd -crypt <PASSWORD>)" > passwords