资讯专栏INFORMATION COLUMN

启用 https 的一点记录

animabear / 2824人阅读

摘要:最近博客从阿里云搬迁到腾讯云,也修改了几个程序上的,顺便也启用了,记录一下。是按流量计费的,感觉没必要,所以使用自定义域名了还得充值块钱如果使用域名的话需要上传证书和私钥的内容,这里的证书推荐使用腾讯云的免费证书,年有效期,不用频繁续签。

近两年越来越多的网站开始使用 https,https 是一个基于 http 协议开发,但是使用了 TLS/SSL 加密了传输数据,所以,简单点说 https 是 http 协议的“安全版”。最近博客从阿里云搬迁到腾讯云,也修改了几个程序上的 bug,顺便也启用了 https,记录一下。

证书

因为 https 采用 ssl 加密,所以部署 https时需要申请证书,证书的作用就是对浏览器和Web服务器双方的身份验证,推荐文章:图解HTTPS。
1. 申请
这里我使用了Let"s Encrypt免费证书。虽然 Let"s Encrypt 只有3个月的有效期,但是因为有certbot自动部署工具,自动更新起来也非常简单。进入 certbot 主页,可以看到下图所示。

选择自己的web服务器类型和操作系统,比如我这里是 nginx+centos6.5,选择完毕之后会自动给出安装命令[以下命令以此为例]。
RedHat系
Debian系

安装完之后执行./certbot-auto certonly开始申请证书。申请证书有两种验证方式,一种是standalone,这种验证方式虽然也可以部署后,但是以后更新证书的时候需要重启 web 服务器,所以我采用了第二种Webroot,就是在网站根目录下生成一个文件,通过访问该文件来验证,不需要重启 web 服务器。

如果选择 Webroot 模式,并且web服务器开启请求重定向的话,需要把 certbot 生成的文件的路径开放,让请求可以命中。

选择验证模式之后,填写网站根目录以及域名,即可开始生成证书文件。以上操作也可以简化为一条命令./certbot-auto certonly --Webroot -d example.com -d www.example.com,多个域名使用-d追加。
执行完毕如果产生类似以下代码,即成功生成。

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/your.domain.com/fullchain.pem. Your cert
   will expire on 20XX-09-23. To obtain a new or tweaked version of
   this certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let"s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

2. 部署
接下来修改nginx配置,添加 443 端口的监听。

    listen 443 ssl;
    server_name  hersface.com www.hersface.com;

    ssl on;
    set $node_port 8360;
    ssl_certificate /etc/letsencrypt/live/hersface.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hersface.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/hersface.com/chain.pem;  
    ssl_session_timeout 5m;
    ssl_protocols TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

重启nginx服务,访问网站,https 已经可以打开了。

3.证书更新
certbot 已经有更新命令,我们只需要部署定时任务就行
30 2 15 * * /root/ssl/certbot-auto renew >> /var/log/le-renew.log
每月15号2:30执行更新,并保存任务日志。事实上90天才过期,完全可以在80天的时候自动更新,而且 Let’s Encrypt 也限制短期内不能频繁更新,但是不确定限制的时间是多少,因为申请完证书30天之后我使用更新命令的时候提示不需要更新。

4.其他免费证书
腾讯云免费证书
沃通免费证书
阿里云免费证书

静态资源托管

之前博客的静态资源是托管在七牛的,使用的七牛免费域名。但是只能使用 http 的请求。因为在开启 https 的页面上如果存在 http 资源的话,浏览器会提示

强迫症表示不能忍。但是七牛如果想使用 https 的话,要么使用 cdn,要么自定义域名。cdn 是按流量计费的,感觉没必要,所以使用自定义域名了(还得充值10块钱)

如果使用https域名的话需要上传证书和私钥的内容,这里的证书推荐使用腾讯云的免费证书,3年有效期,不用频繁续签。上传完配置域名canme解析,如果解析成功,被七牛检测到,就可以开始使用了该域名了。

多说兼容

由于博客一直使用的是多说的评论框,但是多说对 https 处理的非常不好。虽然 js 支持 https,但是用户的第三方头像和评论的表情图片都是引用的 http 地址,百度搜了一下解决方案基本上都是替换 js 里的链接为本地地址,并把原地址当参数传入,由程序处理,或者配置反向代理,获取原图内容,并输出。
参考文章:
让多说评论框完美支持HTTPS

于是我配置了一下反代。

    location ~ "^/proxy/(.*)$" {
        resolver 8.8.8.8;
        proxy_pass http://$1;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        expires 7d;
    }

但是之后发现效果并不好,觉得加载速度特别慢,不知道因为是配置有问题,还是浏览器并发限制导致的。

后来在 github 搜出来一个神器:https://github.com/rainwsy/duoshuo-https,作者把第三方 http 地址改为七牛CDN处理。感谢!!!

至此,部署完毕。后面还需要再研究一下http2。

博客链接:启用 https 的一点记录

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39374.html

相关文章

  • 如何维护老旧代码

    摘要:我们在平时的工作中,总是会遇到老旧的系统以及老旧陈的代码。弊端就是需要维护两套代码,理解两套技术选型。那么问题就来了新的代码如何和旧的代码解耦新代码我们当然是用新仓库,新选择,新打包工具。。。 我们在平时的工作中,总是会遇到老旧的系统以及老旧陈的代码。他们是业务长年累月的积累,以及因为是三、四年前的技术选型造成的系统架构的不合理以及繁琐的代码。维护这些代码总是很头疼,程序员遇到这样的代...

    lcodecorex 评论0 收藏0
  • 如何维护老旧代码

    摘要:我们在平时的工作中,总是会遇到老旧的系统以及老旧陈的代码。弊端就是需要维护两套代码,理解两套技术选型。那么问题就来了新的代码如何和旧的代码解耦新代码我们当然是用新仓库,新选择,新打包工具。。。 我们在平时的工作中,总是会遇到老旧的系统以及老旧陈的代码。他们是业务长年累月的积累,以及因为是三、四年前的技术选型造成的系统架构的不合理以及繁琐的代码。维护这些代码总是很头疼,程序员遇到这样的代...

    y1chuan 评论0 收藏0
  • 记一次性能优化,单台4核8G机器支撑5万QPS

    摘要:前言这篇文章的主题是记录一次程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。因为我们的连接数只有,一旦请求过多,势必会导致数据库瓶颈。我们再次压测,结果显示万,服务器数据库连接正常,连接正常,响应时间平均为,错误率为。 前言 这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式...

    Barry_Ng 评论0 收藏0

发表评论

0条评论

animabear

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<