美文网首页
MEAN项目的全站HTTPS (Express with Ngi

MEAN项目的全站HTTPS (Express with Ngi

作者: kimoCHG | 来源:发表于2017-01-05 19:26 被阅读0次

    MEAN项目

    所谓的MEAN即是指技术栈为 MongoDB + Express + Angular + Nginx 的项目

    SSL证书选择

    在此篇文章中选用 Let's encrypt
    可以使用官方提供的工具 certbot 部署证书

    生成SSL证书

    安装 certbot nginx

    pacman -S certbot certbot-nginx nginx
    

    由于使用了 Nginx,在此使用 certbot-nginx 进行部署

    使用 certbot

    如果没有使用Nginx,或者进行测试可以参考此步。

    certbot certonly
    

    选用 Standalone,填入域名信息,OK生成。
    生成的证书在 /etc/letsencrypt/live/your.domain.com下

    var sslPath = '/etc/letsencrypt/live/your.domain.com';
    var ssl = { 
      key: fs.readFileSync(sslPath + '/privkey.pem'), 
      cert: fs.readFileSync(sslPath + '/fullchain.pem'),
      ca: fs.readFileSync(sslPath + '/chain.pem')
    }
    
    http.createServer(app).listen(process.env.PORT || 8000);
    https.createServer(ssl, app).listen(process.env.PORT || 8443);
    

    使用 certbot-nginx

    1. 配置Nginx
    cd /etc/nginx
    vi nginx.conf
    
    server {
      listen        80;
      server_name   your.domain.com;
      
      location / {
          root html;
          index index.html index.htm;
      }   
    }
    

    :wq保存退出

    1. certbot-nginx 生成证书
    certbot --nginx
    

    工具会自动读取nginx的配置,按照提示进行下一步即可,很简单。
    完成后会同时对nginx的配置进行添加,工具添加的配置条目都会有相应注释的后缀,可以自行查看。
    有兴趣可以用 https://ssllabs.com/ssltest/analyze.html?d=your.domain.com 进行SSL的测试

    重启 nginx

    systemctl reload nginx.service
    

    在浏览器中访问域名能看到绿色小锁就大功告成了。

    HTTPS安全认证

    SSL 证书定时更新

    由于免费的 SSL 证书的有效期为 90 天,所以在过期时需要用工具刷新证书,方法如下:

    certbot renew
    

    这是最简单的刷新方法,会自动更新有效期小于 30 天的证书

    借助 crontab

    如果使用 crontab 进行刷新,官方建议间隔为 2 天,同时如果只想记录错误日志,可以使用 -q 或者 --quiet

    certbot renew --quiet
    

    钩子方法

    使用钩子方法,可以帮助在刷新证书时起停服务。

    certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
    

    参考链接

    Let's encrypt Express
    Configuring Nginx and SSL with Node.js
    Certbot User Guide
    Deploying NodeJS using Express with NginX and Let's Encrypt
    Express behind proxies

    相关文章

      网友评论

          本文标题:MEAN项目的全站HTTPS (Express with Ngi

          本文链接:https://www.haomeiwen.com/subject/ocwzvttx.html