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).
OK, ich habe das herausgefunden, indem ich grundlegende HTTP/HTTPs-Authentifizierung verwendet habe. Posting, falls es jemandem weiterhilft:
auth_basic
In nginx hinzugefügtopenssl
, um eine Kennwortdatei zu erstellenhttps://<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