使用certbot工具制作https证书

转载自:chenke.online
  • 进入certbot官网,根据自己使用的服务器和操作系统进行选择,如图:

    选择完成后,下方会出现配置教程。

  • 安装
    此部分按照官方教程操作即可,但是在centos7中使用yum安装的时候会出现提示找不到需要安装的包,这时需要安装EPEL软件源,因为certbot包包含在EPEL软件源中, 代码如下:

    1
    
    sudo yum install epel-release
    

    安装完EPEL软件源按照官方教程继续即可

  • 配置nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    server {
      listen       443 ssl;
      server_name  chenke.online;
      ......
    }
    # 80端口自动跳转443端口
    server {
      listen       80;
      server_name  chenke.online;
      rewrite ^(.*)$ https://${server_name}$1 permanent;}
    
  • 获取证书

    • 第一种方法:根据教程提示,运行如下代码:

      1
      
      sudo certbot --nginx
      
    • 第二种方法:使用自动部署脚本:

      1
      2
      3
      
      wget https://dl.eff.org/certbot-auto
      chmod a+x certbot-auto
      ./certbot-audo
      
  • 自动更新证书
    certbot使用的是Let’s Encrypt证书,虽然是免费的,但是90天就会过期,certbot官网上也提示了需要一个定时的脚本进行证书的自动更新,certbot-auto脚本带有自动更新证书功能,运行如下代码即可:

    1
    
    ./certbot-auto renew --quiet --no-self-upgrade
    
遇到的问题

运行完这行获取证书的代码后,命令行报了一下错误:

1
nginx: [emerg] duplicate listen options for 0.0.0.0:443

说是443有多个监听,然后使用:

1
lsof -i:443

查看443端口的程序,发现有两个进程在监听443端口,然后果断kill了一个,只剩下了一个nginx的进程,重新运行获取证书的代码,还是报同样的错,于是各种查,发觉可能是nginx的配置文件有问题,然后回去检查nginx的配置,发现nginx配置文件中listen 443中没有加’ssl’,加上后再运行获取证书的代码即可

nginx使用docker容器

如果nginx使用docker容器,需要如下启动nginx容器:

1
sudo docker run -i -t -d --name blog -p 443:443 -p 80:80 -v /etc/nginx/conf.d:/etc/nginx/conf.d -v /etc/letsencrypt:/etc/letsencrypt appletree/blog_server  /bin/bash

  • 说明:
    -p 将容器的80和443端口映射到宿主机的80和443端口上
    -v 将容器中nginx和证书保存的目录路径挂载到宿主机的指定目录下
    其他比较常用,但是以防遗忘,在这记一下吧,
    -i 用于控制台交互
    -t 分配tty,该可以支持终端登录
    -d 后台运行
    –name 给容器起个名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值