第三讲:https免费证书获取
Posted 栏观科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三讲:https免费证书获取相关的知识,希望对你有一定的参考价值。
http是一种广泛使用的应用层协议,但是它是明文传输的,这给了黑客可乘之机。https是http的升级版,可以有效地防止中间人攻击。如果想要自己的站点支持https协议,需要获取https证书。
云服务商购买
云服务商提供了证书售卖服务,并且可以申请免费的证书,但有效期一般只有一年。证书的价格对于个人来说还是比较贵的,如果只是搭建个人博客,可以考虑使用免费的证书。
Let’s Encrypt免费获取
Let’s Encrypt是一个免费获取https证书的网站,下面以Ubuntu为例,介绍一下如何利用Let’s Encrypt获取证书。
- 设置nginx
Let’s Encrypt提供的工具能够自动识别nginx配置文件里面的server块并进行https相关的配置。所以在配置https之前,需要在nginx上配置好需要加证书的域名。
nginx的配置文件可以放到/etc/nginx/conf.d目录下,nginx认为这个目录下所有的.conf文件都是nginx的配置文件。在这个目录下创建一个我们域名的配置文件,比如:www.example.com.conf
,文件的内容如下。
server
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
检查一下配置是否正确,并让nginx重新加载配置:
nginx -t && nginx -s reload
- 下载Let’s Encrypt工具
$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python-certbot-nginx
python3对应的工具下载命令如下:
$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python3-certbot-nginx
- 获取免费证书
sudo certbot --nginx -d example.com -d www.example.com
执行完命令之后,你会发现你的 www.example.com.conf
文件发生了一些变化。里面增加了关于https的配置信息。
server
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
listen 443 ssl; # managed by Certbot
# RSA certificate
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# Redirect non-https traffic to https
if ($scheme != "https")
return 301 https://$host$request_uri;
# managed by Certbot
需要提醒的是,改完之后http会强制跳转到https,如果还是需要能通过http访问,那需要将最后的一段去掉。
- 刷新证书
为了资源的最大化利用,Let’s Encrypt的证书有效期只有90天,所以需要借助crontab来自动的更新证书。
- 打开 crontab
$ crontab -e
- 自动更新
0 12 * * * /usr/bin/certbot renew --quiet
总结
免费证书适用于对安全性要求不太高的场景,如果是公司还是建议购买专业的证书。
以上是关于第三讲:https免费证书获取的主要内容,如果未能解决你的问题,请参考以下文章