背景

  • 证书可用在https,wss等需要tls加密认证的场景;
  • 正式使用的环境一般都会使用收费的证书,但测试服或自己实验环境大部分都用自签名或免费的证书;
  • webrtc相关的模块标准要求必须加密且不能是自签名证书;

先决条件

从背景上来看我们得想想办法来薅一薅羊毛了,但为了安全性也还是有一些准入门槛的,如下:

  • 得下载一份 certbot-auto 脚本;
  • 得有服务器的登录ssh权限;
  • 第一次安装时得有root权限可以将脚本加入sudo list;
  • 服务器必须有可用的域名已经预先解析到了本机上且能ping通,地址为本服务器的公网地址;
  • 服务器上的80或443端口是空闲的如果外围有防火墙需要在防火墙上开放了公网的相应端口;
  • 脚本在执行时为了校验域名被解析的主机就是你所操作的主机所以会自动开启443端口进行现场认证, 防止绑定了非法域名,还有一个注意的点就是它只能提供具体域名无法对范域名进行绑定证书;

获取证书

  1. 先下载可执行脚本: 详见: <wget https://dl.eff.org/certbot-auto> ;
  2. 放到自己的一个固定的目录如:/home/yine/scripts, 然后添加可执行权限: chmod a+x /home/yine/scripts/certbot-auto;
  3. sudo -iu root 切换到root权限添加脚本到sudo列表中去,以方便后续普通用户的证书自动更新操作;
  4. 添加sudo列表: echo 'popo ALL = NOPASSWD: ...(其它已有指令), /home/yine/scripts/certbot-auto' > /etc/sudoers.d/yine;
  5. sudo -iu yine 切换到普通用户;
  6. sudo /home/yine/scripts/certbot-auto certonly --standalone -d yourdomain.com --agree-tos --email youremail@gmail.com;
  7. 当执行成功后会在/etc/letsencrypt下生成相关临时文件和证书文件;
  8. /etc/letsencrypt/live/yourdomain.com/fullchain.pem 为证书文件;
  9. /etc/letsencrypt/live/yourdomain.com/privkey.pem 为证书的私钥;
  10. 为了应用能直接访问可以修改/etc/letsencrypt目录归属和权限 chown -R yine:studio /etc/letsencrypt chmod -R 744 /etc/letsencrypt;

配置应用使用

  1. nginx
  server {listen 80;server_name abc.com;rewrite ^(.*) https://abc.com permanent;
}
server{listen 443 ssl default_server;listen [::]:443 ssl default_server;ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;server_name www.yourdomain.com;root /web/yourdomain.com/;
}
  1. kamailio 在 /etc/kamailio/tls.cfg
private_key = /etc/letsencrypt/live/yourdomain.com/privkey.pem
certificate = /etc/letsencrypt/live/yourdomain.com/fullchain.pem

配置自动更新

  1. 在 /home/yine/scripts 下新建脚本 corn-cerbot-auto.sh
  2. 添加:
#!/bin/bash
sudo /home/popo/scripts/certbot-auto renew --quiet
sudo /etc/init.d/kamailio force-reload
  1. 在计划任务中添加(crontab -e): 0 4 1 */2 * /home/yine/scripts/corn-cerbot-auto.sh #每两个月的一号凌晨4点更新一次

新建复制脚本

  1. vim corn-cerbot-auto.sh
  2. 脚本如下:
#!/bin/bashsudo /home/popo/scripts/certbot-auto renewHOME_DIR=/etc/letsencrypt/live
DOMAIN_DIR=xxx.comDEST_DIR=/home/popo/DATA/etc/kamailio/certs/xxx.comcd $HOME_DIR/$DOMAIN_DIRREAL_PRIVKEY=`readlink $HOME_DIR/$DOMAIN_DIR/privkey.pem`
rm -rf $DEST_DIR/privkey.pem
cp -r $REAL_PRIVKEY $DEST_DIR/privkey.pem
chmod 777 $DEST_DIR/privkey.pemREAL_FULLCHAIN=`readlink $HOME_DIR/$DOMAIN_DIR/fullchain.pem`
rm -rf $DEST_DIR/fullchain.pem
cp -r $REAL_FULLCHAIN $DEST_DIR/fullchain.pem
chmod 777 $DEST_DIR/fullchain.pemsudo docker stop kamailio
sleep 3s
sudo docker start kamailio

其它生成方式

  • 还有其它的依赖web的生成方式,比如nginx或apache等,需要有这样的web应用在,直接使用认证文件的方式进行;
  • 详见: https://letsencrypt.org/zh-cn/getting-started/#

使用letsencrypt-certbot生成免费证书相关推荐

  1. 阿里云服务器 Certbot 申请 LetsEncrypt 泛域名免费证书,并实现自动续订

    阿里云服务器 Certbot 申请 LetsEncrypt 泛域名免费证书 准备工作 首先,要有一个域名,且使用 阿里云DNS 提供解析服务.系统Centos 7.6以上 查看系统版本命令:lsb_r ...

  2. openssl 生成免费证书

    1.什么是openssl? 它的作用是?应用场景是什么?什么是openssl? 它的作用是?应用场景是什么? openssl是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,它可以避免 ...

  3. 使用certbot生成https证书

    目录 背景 全部操作步骤概览 1.打开https://certbot.eff.org 2.选择自己用的什么软件并且是什么操作系统 3.查看操作步骤 实战细节 安装snap 安装Certbot 生成证书 ...

  4. Certbot 生成 ssl 证书

    certbot 是用来申请 Let's Encrypt 免费 SSL 证书一般的免费 SSL 证书,好像都是使用 Let's Encrypt 颁发的证书.官网地址:https://letsencryp ...

  5. acme.sh 生成免费证书,维护证书

    什么是acme.sh 用shell脚本从Let's Encrypt 或 zerossl 两个颁发证书的源站,获取ssl证书, 并定期维护的一个开源产品.在证书过期前,自动更新.为我们带来了开源的便利, ...

  6. 《Linux运维实战:使用openssl生成免费证书》

    文章目录 一.背景 二.生成证书 2.1.证书格式为cer 2.2.证书格式为pem 三.Nginx配置 四.安装客户端证书 总结:整理不易,如果对你有帮助,可否点赞关注一下? 一.背景 由于第三方外 ...

  7. Windows使用Openssl生成免费证书

    一.安装 下载 Win32/Win64 OpenSSL Installer for Windows - Shining Light Productionshttp://slproweb.com/pro ...

  8. 使用Certbot 生成 https 证书

    1.下载certbot项目 # git clone https://github.com/certbot/certbot.git # cd certbot/ # chmod a+x ./certbot ...

  9. 使用certbot-auto脚本安装Certbot 生成https证书

    在CentOS7上安装Certbot有三种方式: 使用Certbot官方提供的对应平台的RPM包安装 使用Certbot官方的提供的certbot-auto安装 使用pip安装Certbot,因为Ce ...

最新文章

  1. 【Linux】【服务器】 CentOS7下安装MySQL(版本8.0)详细过程步骤
  2. 在Excel中如何引用其他的工作表或者工作簿
  3. 容器与Pod到底有什么区别和联系?
  4. Properties常用方法
  5. html单选框+点击取消选中,【前端JS】radio 可单选可点击取消选中
  6. RSA加密、解密、签名、校验签名
  7. 人间故事馆话题:聊聊那些被骗经历,让其他人不再被骗
  8. java一周实训的心得体会_java实习心得体会
  9. linux安全加固技术--内核安全模块LSM
  10. linux下ASM配置
  11. cannot find -lbz2
  12. 个人日记-电影《花木兰》观后感-20200913
  13. Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing
  14. 【Java百炼成神】双生武魂——HashMap、LinkedHashMap、Hashtable
  15. 上海联通第一家冰激凌无限店正式开业,拥抱新零售时代!
  16. 安卓轻量级线上APM监测
  17. Fast-MoCo: Boost Momentum-based Contrastive Learning with Combinatorial Patches
  18. R6034 又来了.
  19. Android中SurfaceView的使用详解
  20. Openwrt 分流-缓存-去广告

热门文章

  1. 屁宝杀手升级啦!支持 Creator 2.4.0及所有2.X版本
  2. 名帖286 董其昌 行书《行书帖选》
  3. 2-6实变函数之微分与不定积分
  4. 从零开始vue(下)
  5. 认证机构ISO证书真伪鉴别辨别
  6. 谈恋爱已经不能满足我了,看了《独家记忆》想原地结婚
  7. 通过Python3 爬虫抓取漫画图片
  8. JS鼠标事件mouseout与mouseleave以及mouseover与mousemove区别
  9. 数组对象和类数组对象区别
  10. CSS----z-index 属性详解