侧边栏壁纸
博主头像
术业有道之编程博主等级

亦是三月纷飞雨,亦是人间惊鸿客。亦是秋霜去叶多,亦是风华正当时。

  • 累计撰写 99 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

乌班图20.04下申请ssl证书并自动续签

Administrator
2021-05-26 / 0 评论 / 0 点赞 / 183 阅读 / 6143 字

liunx下申请ssl证书一直是用 certbot-auto 这个脚本,在乌班图20.04时彻底移除了python2,导致了此脚本彻底不可用,在其官网上有非常详细的介绍以及解决方案https://certbot.eff.org

这个链接以及说明了所有问题,但是鉴于这是一篇水文,所以我得啰嗦一下步骤。动手能力强的,看到这里可以跑了,不用看我下面的内容。

certbot具有时效性,申请一次有效期为90天,之后需要续期证书,所以下面有自动更新的动作

一、更新snapd

 sudo snap install core
 sudo snap refresh core

二、安装certbot

sudo snap install --classic certbot

创建快捷方式(这一步不是必须的)
sudo ln -s /snap/bin/certbot /usr/bin/certbot

三、申请证书

前置条件(不看这个直接往后操作的,坑了别怪我)

1、需要将你要申请证书的域名增加a记录解析到当前运行certbot服务器ip上,不然会导致证书申请失败

2、certbot可能会占用443端口(未验证此条内容)

使用certbot申请证书有2种方式:

第一种方式:停止web服务器了再申请证书,这种会影响当前正在提供的http服务
certbot certonly --standalone

第二种方式:不停止web服务器申请证书,即不影响当前正在提供的http服务
certbot certonly --webroot

对于初次网站可以选择第一种。我拿第一种方式示例。

第一步:输入一个可用邮箱,这里会接受一些重要通知
certbot1

第二步:这里同意协议,选择y
certbot2

第三步:不允许公开邮箱地址,这里选择n
certbot3

第四步:输入要申请的域名
certbot4

第五步:输入域名之后成功颁发证书
certbot5

第六步:测试任务脚本的有效性
sudo certbot renew --dry-run

注意:

1、记得在输出的记录中把证书目录记下来,通常都在/etc/letsencrypt/live/你的域名/

2、记得给相关证书增加权限,无权限的时候通常会有一些奇怪的问题,现象是证书无效
sudo chmod -R 777 /etc/letsencrypt/

附上一个nginx使用此证书的例子

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

四、用插件的方式申请证书

如有必然需要,可以在申请证书的时候增加插件功能,直接前往
https://certbot.eff.org,按需选择即可。

apache

  • 一键申请证书并配置ssl
    sudo certbot --apache

  • 只申请证书
    sudo certbot certonly --apache

nginx

  • 一键申请证书并配置ssl
    sudo certbot --nginx

  • 只申请证书
    sudo certbot certonly --nginx

其他的几种http服务器自己去官网上看吧,我实在是水不动了。

附上一个证书转换的过程,其实大概率用不到证书转换,用上面的示例即可通用了。

查看PEM编码证书

openssl x509 -in cert.pem -text -noout
openssl x509 -in cert.cer -text -noout
openssl x509 -in cert.crt -text -noout

查看DER编码证书

openssl x509 -in certificate.der -inform der -text -noout

转换证书格式

openssl x509 -in cert.pem -inform pem -outform der -out cert.der
openssl rsa -in privkey.pem -out privkey.key 
openssl x509 -in fullchain.pem -out fullchain.crt

到这里水文结束

个人公众号

0

评论区