第三讲:https免费证书获取

 http是一种广泛使用的应用层协议,但是它是明文传输的,这给了黑客可乘之机。https是http的升级版,可以有效地防止中间人攻击。如果想要自己的站点支持https协议,需要获取https证书。

云服务商购买

 云服务商提供了证书售卖服务,并且可以申请免费的证书,但有效期一般只有一年。证书的价格对于个人来说还是比较贵的,如果只是搭建个人博客,可以考虑使用免费的证书。

1.png

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来自动的更新证书。

  1. 打开 crontab

$ crontab -e

  1. 自动更新

0 12 * * * /usr/bin/certbot renew --quiet

总结

 免费证书适用于对安全性要求不太高的场景,如果是公司还是建议购买专业的证书。

你可能感兴趣的:(第三讲:https免费证书获取)