使用 Certbot + Let's Encrypt 小步快跑的奔向 Https

HTTPS SSL …原理、好处就不扒了,直接上过程。

了解Certbot

  1. 首先 进入 Certbot
  2. 选择使用的服务器软件 / 主机系统

file

  1. 选择后进入

生成及安装证书

  1. 安装依赖的 epel 源,然后安装 certbot

    $ sudo yum install epel-release
    $ sudo yum install certbot
  2. certbot certonly 命令 , 生成证书公私钥. 示例: (支持多域名, )

    certbot certonly --webroot -w /home/sites/webroot1 -d domain1.com  -w /home/sites/webroot2/ -d www.domain2.com

    此过程中 Certbot 会创建随机文件,然后远程验证域名及服务控制权

    新生成的证书及相关文件,将生成到 /etc/letsencrypt 路径下。

    drwx------ 3 root root 4096 Aug  8 23:11 accounts
    drwx------ 3 root root 4096 Aug  8 23:16 archive
    drwxr-xr-x 2 root root 4096 Aug  8 23:16 csr
    drwx------ 2 root root 4096 Aug  8 23:30 keys
    drwx------ 3 root root 4096 Aug  8 23:16 live     #nginx 可用证书目录
    drwxr-xr-x 2 root root 4096 Aug  8 23:25 renewal
  3. 编辑 site.conf 加入你的 ssl 证书

            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
        }   
    
        location ~ /\.ht {
            deny all;
        }   
    
        # 看这里
        ssl_certificate     /etc/letsencrypt/live/domain.com/cert.pem;
        ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    }
  4. 然后证书都好了让我们,把 http 请求都转向 https

    server {
        listen 80; 
        server_name icoding.so;
    
        rewrite ^/(.*)$ https://icoding.so/$1 permanent;
    }
  5. 重启 nginx 刷新浏览器欣赏那个绿色的小锁吧

    Alt Text

  6. 最后 为了保证证书的长期可用,添加个 crond 任务,每月自动续期即将到期的证书吧

    crontab -e
    # 输入
    * * * */1 * /usr/bin/certbot renew 1>> /dev/null 2>&1

最后推下本人小博客, icoding.so ,基于 laravel 5.2 github 开源,文档编辑中。

踩坑过后最终确定:

  1. Let's Encrypt 是单域绑定, 虽然支持多域名,但是不支持泛域绑定。
  2. Let's Encrypt 需要每90天续期。
    使用的童鞋自行斟酌
本帖已被设为精华帖!
附言 1  ·  7年前

经过一段时间的了解 , 发现本文并不完善 , 但是作为记录继续保留 , 本着负责的态度,推荐大家阅读.

Let's Encrypt 给网站加 HTTPS 完全指南

另外附上 小博客的 SSL Report

本帖由 Summer 于 7年前 加精
jasonchang
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 26
jasonchang

@Summer 在这了, 其实核心就是一条命令。
吐槽下啊. textarea 编辑 markdown 真心苦,最后是在我博客编辑成了粘贴到这的。
看看我博客的编辑器吧,有意的话我请参考。

7年前 评论
Summer

:+1: 网站终于打开了,贴上源代码地址:https://github.com/jason-chang/icoding.so

7年前 评论
Summer

评论框和编辑器最近一直被人吐槽 :flushed:

7年前 评论

感谢分享,一会去试试

7年前 评论

感谢分享,一会去试试

7年前 评论
TimJuly

@jasonchang
s2.icoding.so 这个域名的https证书没配对

7年前 评论
TimJuly

@Summer
回复完了有时候会出现一段json

7年前 评论

Let's Encrypt 3个月延期太麻烦了。

7年前 评论
Summer

@TimJuly 有朋友也反应过了,我一直没定位到

7年前 评论
TimJuly

@Summer
回复按钮的 type 是 submit,这样在js事件没绑定上的时候就会触发浏览器的默认事件,就提交表单到 https://phphub.org/replies 这里了,具体为啥没绑定上事件,我也不太清楚,暂时没复现.

7年前 评论
jasonchang

@TimJuly 阿里云CDN的 https 存在问题

7年前 评论
Summer

@TimJuly FIXED 多谢 :sunglasses:

7年前 评论
jasonchang

@Summer 附言 403 了, 另外补充了内容,见文章底端。

7年前 评论
jasonchang

@Summer 附言再次 403,作为活跃社区以后上线 / 调试是否也应该调换到晚上?

file

7年前 评论

按照文章做没有成功,出问题的地方在nginx的conf,加入了如下内容就好了:https://m.reactshare.cn/issues

    listen 443 ssl;
    ssl on;
    ssl_certificate     /etc/letsencrypt/live/domain.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

参考文档:https://s.how/nginx-ssl/

7年前 评论
Summer

@jasonchang 是个 BUG,抱歉上次的反馈没看着,消息太多

7年前 评论
Summer

@jasonchang Bug 已改正,另外发现好像语气里有指责的意思,别这样

7年前 评论
jasonchang

@Summer 辛苦了 :+1: , 太敏感了吧,语气重了? 话说还是把头像换回来吧,现在头像配上上边的回复,违和!!!! :goberserk:

7年前 评论
jasonchang

@Summer 还是软妹 / 动漫头像合适。:joy:

7年前 评论
Summer

@jasonchang :scream: 这是我最好看的一张头像了

7年前 评论

@Summer 老大头像很酷

7年前 评论
jasonchang

@Summer 我的小博客刚刚加上 github 登陆 , 发现回调过来获取用户信息好慢……然后看看 phphub 是不是也这么慢。然后看到了真这个。
话说是不是 fastcgi 超时设的低了?

file

另外不知道 @Summer 有没有 catch guzzle curl 异常没有,国内的网的啊。最好catch下吧。我的:


use GuzzleHttp\Exception\ConnectException;

………

        try{
            $oauthUser = \Socialite::driver($driver)->user();
        }catch (ConnectException $e){
            return \View::make('layouts.feedback', [
                'flag' => false,
                'title' => '绑定失败!',
                'message' => '服务器获取"'. ucfirst($driver). '"账号信息失败, 请稍后再试!',
            ]);
        }
7年前 评论
jasonchang

@Summer phphub 现在好像没用 bugsnag 啦,记得 phphub laravel4 时代是有的,话说现在 bugsnag 国内速度也挺快的。

7年前 评论
Summer

@jasonchang Bugsnag 不稳定

7年前 评论
jaak

配置多个server 报错
chrome浏览器出现访问两个https网站 其中一个访问正常,另一个报 ERR_SSL_PROTOCOL_ERROR 错误
而 safari浏览器访问这两个https网站都正常 ;???

server {
    listen          443 ssl;
    server_name     a1.site.com;
    #... 
}
server {
    listen          443 ssl;
    server_name      a2.site.com;
    # ... 
}
5年前 评论
      • */1 * /usr/bin/certbot renew 1>> /dev/null 2>&1 定时任务,每分钟执行一次
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!