• 【linux】centos6/7 + nginx 利用certbot 申请https证书


    没错我又踩坑了。昨晚上搞到十二点半才成功申请。鬼知道OJ服务器是个什么渣渣。

    早上才算正式弄好,中间也学了不少东西,记录一下。这次是http转https,所以默认的还是只有80端口。

    请务必确保自己的80端口是开的。。否则会GG。


    首先贴一下cerbot的网址 https://certbot.eff.org/,你可以去里面选择你的环境然后会有教程。

     

    1、下载Certbot,并且添加权限

     

    wget https://dl.eff.org/certbot-auto
    chmod   a+x   ./certbot-auto

     

      

    2、关闭nginx服务

     

    sudo service nginx stop

     

     

    3、使用certbot-auto,生成证书


    先说一下自己的坑吧,这里着实坑死我了。

    不想看的可以跳过这一段!!!因为很多废话!!

    我先百度了一下,是有这样的,

    ./certbot-auto certonly --standalone --email 你的邮箱 -- agree-tos -d 你的域名

    但是我们这个oj的域名有点奇怪,估计是没有,然后会报 certbot: error: unrecognized arguments:。

    试了好久,然后我看没有特别有效的解决办法,于是我放弃了。 


    然后,我又试了手动的方式,结果给了我一个蜜汁challenge,看了官网是有这方面的解释的。

    所以我的80端口被占用了,于是我,查看80端口

    lsof -i:80

    杀进程。

    kill -9 进程id

    md杀出问题了。我把数据库杀掉了,结果mysql挂了。

    贼慌,还好重启了一下,就好了。

    于是我这个也放弃了QAQ。

    真的是血泪史,哭唧唧。


     最后尝试了一次,这种方式是成功的。

    ./certbot-auto certonly --webroot -w 你的网站根目录 -d 你的域名

     

    你进入要配置的域名的nginx的conf里面,红色框是根目录,蓝色框就是域名(之前这里是只有80的,我这个截图是修改之后的)

     

     

    4、查看letsencrypt

    这一步成功后就会生成这个目录 /etc/letsencrypt/live/你的域名

    这个底下会有这些东西,红框的两个是我们要配置进conf的。

     

     

     5、配置conf

    请在sever下加入这三行

    ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/你的域名/chain.pem;

     

    并且把原来server下的listen 80 去掉改成

     

    listen 443 ssl;
    ssl on;

     

    这里慎重提醒!!!

    千万不要加listen [::]:443 default_server ipv6only=on,我昨天一直没成功,是因为加了这句话,我也不知道为什么。花花帮我去掉后就可以了。

     

    6、测试并重定向

    打开nginx服务

    sudo service nginx start

    这里先建议测试一下https://你的域名,看是否可以访问,不能再去找原因。我比较顺利这里。就没有问题。qwq

    然后测试成功后,做一个80端口重定向,红框部分为你的域名。

     

    7、重启nginx服务器

    上面改完之后

    sudo service nginx reload

    就可以了。

    不过!!!!我在这里是出了问题的。证书还是不行,原因是我没有给 /etc/letsencrypt/live/这个里面权限,导致不能访问,所以会失败。

    这个就用chmod a+x再给一次权限啦,最好是整个目录都给哦。

    后面再把更新证书写一下。有效期是90天,所以需要更新证书的!!!。


    update: 更新证书

    因为才刚刚上了证书,这么短时间去renew肯定是不行的。所以实操还是不知道效果。这是参考网上的。

    1、手动更新

    ./certbot-auto  renew   -v

     

    2、自动更新

    ./certbot-auto  renew  --quiet  --no-self-upgrade

     

    为了避免每90天上来更新一次证书。 我写了个shell脚本执行第二句话,用corntab写了个定时任务。

    $touch batch.sh
    
    $vim batch.sh

    执行一下脚本会发现权限不够,然后如下

    $chmod 700 batch.sh
    $./batch.sh

    就可以运行了。

     

    接下来接入定时任务

    $crontab -e

    这里是定时的每周一的一点执行这个脚本

    0 1 * * 1 ./bash.sh

    保存以后再执行下面这条命令

    $service crond restart

     

    查看执行日志是这样的

    可以看到我写的每分钟执行的一个测试文件


    虽然又是一次很辛酸的历程,但是知道了nginx的配置,还自己申请了一下。总的还是蛮有(nan)趣(guo)的。

    菜鸡又学了一些东西,收获很多。qwq希望对你们有帮助。

  • 相关阅读:
    DevExpress- GridControl数据导出到EXCEL
    DevExpress 如何获取Repository Item的值
    ae 栅格处理异常
    VS界面控件大小调整
    C++/cli中swtich处理命令行接收到的关键字
    Civil 3d设置横断面图样式
    反射学习
    System.Diagnostics.Process启动Civil 3D及AutoCAD
    Lisp小程序,大作用,不该放弃!
    设置曲面样式之流域
  • 原文地址:https://www.cnblogs.com/Asumi/p/10597652.html
Copyright © 2020-2023  润新知