Acceso Restringido/Autenticación para un Nodo Geth Remoto

He configurado nodos geth remotos que se ejecutan constantemente como proveedores web3 para admitir mi DApp.

¿Cuál es la mejor manera de restringir el acceso para asegurarse de que solo los clientes autorizados (mi servidor) se conecten a este nodo geth?

Por ejemplo, infura requiere una clave de acceso para los usuarios: https://mainnet.infura.io/{ACCESS_KEY} .

¿Cómo configuraría algo así para mi nodo geth?

El puerto RPC del nodo geth es 8545 y estoy usando un proxy inverso nginx para servir una conexión SSL/TLS en el puerto 443 ya que mi DApp está protegido (https).

Respuestas (1)

OK, me di cuenta de esto, usando la autenticación básica de HTTP/HTTP. Publicación en caso de que esto ayude a alguien más:

  1. AWS: acceso TCP entrante deshabilitado al puerto 8545 (en grupos de seguridad de AWS)
  2. Agregado auth_basicen nginx
  3. Se utiliza opensslpara crear un archivo de contraseña
  4. Nueva URL web3:https://<USERNAME>:<PASSWORD>@mydomain.com:443

configuración nginx

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://;
    }
}

Crear archivo de contraseña

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