使用ArcBlock Blocklet开发出来的Dapp,如abtworld.cn,在浏览器访问时会有不安全的提示,这是由于不支持HTTPS的原因,只要安装SSL证书就可以。 在哈希快讯刚上没多久,ArcBlock-陈天就提出建议可以安装let's encrypt的免费证书,但后面由于有比较多的其他功能要开发耽误了;最近有点时间,但没有这方面经验,为防止方案跑偏,咨询了前端专家王仕军。
感谢仕军的给力支持,同时感谢老郭工程师使用宝塔配置SSL的建议。各方面综合了下,最后选择nginx;百度搜索了下,nginx功能确实强大,不仅可以做反向代理,还可以做负载均衡,这里按照网上的安装配置教程,整理如下。 1. Nginx安装 (1)确认是否已安装,如已安装则跳过 /usr/local/nginx/sbin/nginx -V (2)安装依赖包 sudo apt-get install openssl libssl-dev sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g-dev (3)下载安装包 cd /usr/local/src sudo wget http://nginx.org/download/nginx-1.17.5.tar.gz (4)编译 sudo tar -xzvf nginx-1.17.5.tar.gz cd nginx-1.17.5 sudo ./configure --prefix=/usr/local/nginx --with-http_ssl_module sudo make (5)安装 sudo make install /usr/local/nginx/sbin/nginx -V
2. 获取证书
现在的免费证书,除了陈总推荐的
let's encrypt,因为我有在使用阿里云服务器,还有阿里云的安全证书;
let's encrypt官方推荐使用certbot进行管理, 证书有效期三个月,工具可以自动刷新证书;阿里云的个人免费证书,有效期1年,到期后重新申请。 (1)certbot https://blog.csdn.net/weixin_34192816/article/details/89543290 https://jianshu.com/p/4220bdbda0e1 (2) aliyun https://common-buy.aliyun.com/?commodityCode=cas#/buy 这里选用阿里云的个人免费证书。
申请证书和绑定域名后,下载证书,通过FTP上传到abtworld的服务器。 3.Nginx.conf 配置 使用以下命令打开nginx的配置文件进行编辑
sudo vim /usr/local/nginx/conf/nginx.conf
使用注释语法注释默认的server配置,并添加以下HTTPS(443端口)的服务配置 server { listen 443 ssl; #证书绑定的域名 server_name abtworld.cn; charset utf-8; #从阿里云下载的证书文件 ssl_certificate /home/forge/abtworld/ssl/abtworld.cn.pem; ssl_certificate_key /home/forge/abtworld/ssl/abtworld.cn.key; fastcgi_param HTTPS on; fastcgi_param HTTP_SCHEME https; access_log /var/log/nginx/www.abtworld.cn.access.log; error_log /var/log/nginx/www.abtworld.cn.error.log; location / { # default port, could be changed if you use next with custom server #反向代理配置,代理指向本地的Dapp端口 proxy_pass http://localhost:3030;
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade;
# if you have try_files like this, remove it from our block # otherwise next app will not work properly # try_files $uri $uri/ =404; } }
监听HTTP的80端口,并将HTTP的请求强制跳转到HTTPS的安全连接。 server { listen 80; server_name abtworld.cn; rewrite ^(.*)$ https://$host$1 permanent; } }
4.关闭80/443端口转发 由于之前没有使用nginx做反向代理,设置了HTTP 80端口的转发功能,使用了nginx后需要关闭他,否则HTTP跳转HTTPS的配置会不生效。 (1)列出规则,包括序号 sudo iptables -t nat -L -n --line-numbers (2)根据序号删除(假如删除序号1) sudo iptables -t nat -D PREROUTING 1 备注: 对应的添加端口转发命令 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3030
5.启动nginx 上面的步骤都完成后,就可以通过以下命令启动nginx服务。 sudo killall nginx sudo /usr/local/nginx/sbin/nginx -t sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 如果启动失败,查看和释放80/443端口后再次启动 sudo netstat -lntp 经过以上步骤,基于ArcBlock Blocklet应用的SSL证书安装完成,可以使用以下步骤进行验证: 1. 输入 https://abtworld.cn可以正常,并浏览器中有个小锁的标志
2. 输入http://abtworld.cn或者abtworld.cn,浏览器自动跳转到https://abtworld.cn安全连接。
—-
编译者/作者:大米蜂
玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。
|