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).
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:
auth_basic
en nginxopenssl
para crear un archivo de contraseñahttps://<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