LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > 【ArcBlock Forge系列】10 - 为Blocklet安装SSL证书

【ArcBlock Forge系列】10 - 为Blocklet安装SSL证书

2019-12-15 大米蜂 来源:区块链网络

使用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安全连接。

—-

编译者/作者:大米蜂

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...