建立一个HTTPS的测试网络钱包

建立HTTPS的钱包很简单,载入SSL证书就可以了,难点在于核心开发者提供的测试网络API是WS,IP形式的,例如ws://192.144.171.138:8003。而HTTPS的站要求引入的API也是加了SSL证书的例如WSS。

因此本宝宝灵机一动想到了一个解决办法,使用流量转发的方法。

例如我们要建立一个钱包的公共API,现在的方法是用nginx反向代理节点API端口, 监听443端口转发过去。而要反代一个现有的IP形式API,只需要在你的nginx服务器上绑域名做证书,反向代理到例如192.144.171.138:8003就可以了:

# WebSocket 配置
map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

upstream nodeapi {
    server 192.144.171.138:8003 fail_timeout=0;
}

server {
# 监听80端口
        listen 80;
        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;
# api.seerchain.org 修改为你的域名
        server_name api.seerchain.org;

        location / {
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_pass http://nodeapi;
 # WebSocket 配置
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }
}

上面是基础的配置,请自行用certbot加SSL。详见https://docs.seerchain.org/#/zh-Hans/tools?id=%E7%94%B3%E8%AF%B7ssl%E8%AF%81%E4%B9%A6

当然,这个方法也适用于一些没法绑未备案域名的服务器,在节点服务器上用nginx把节点API暴露在公网即可。但需要注意的是,不可以使用80或443,因为nginx会认为这是http协议,而节点API是WS,用其他的任何不常用端口都行,就是普通TCP了。例如:

# WebSocket 配置
map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

upstream nodeapi {
# 127.0.0.1:9090 是节点启动时配置的rpc服务地址和端口,修改为你的
    server 127.0.0.1:9090 fail_timeout=0;
}

server {
# 监听80端口
        listen 9999;
        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;
# api.seerchain.org 修改为你的域名
        server_name 服务器IP;

        location / {
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_pass http://nodeapi;
 # WebSocket 配置
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }
}

之前的步骤请参考:https://docs.seerchain.org/#/zh-Hans/tools?id=seer公共api服务器配置指南
简单无说明的命令:

sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install -y nginx python-certbot-nginx
sudo nano /etc/nginx/sites-available/apifile

sudo ln -s /etc/nginx/sites-available/apifile /etc/nginx/sites-enabled/
sudo systemctl reload nginx

sudo certbot --nginx -d seerchain.org -d api.seerchain.org
sudo certbot renew --dry-run