现在个人建站越来越容易了,让个人站点支持https安全访问,也是大势所趋。曾几何时,笔者为了一个免费证书,翻遍了某度。现如今,终于出现了一个可靠的免费证书产品,它就是:Let’s Encrypt。
Let’s Encrypt具体多牛就不再赘述,本文就将用最简单的步骤申请一个免费的SSL证书。
前置准备工作
准备一台EC2实例,实例配置安全组可以访问80端口,安装nginx,浏览器可以可以正确访问并显示nginx Test Page。
准备一个域名,为了测试,我们添加一个A Record:test.example.com指向EC2的ip。并配置EC2的nginx.conf,servername为test.example.com。(将example.com替换为自己的域名,下文为了方便全部为example.com)
当前页面浏览器会标识不安全:
安装Certbot
Certbot是一个可以快速申请Let’s Encrypt证书,并自动续期的命令行工具。按照官方文档一步步安装(不同版本的linux具体操作不尽相同,本文为Amazon Linux)。
wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto
申请证书
Certbot提供了多种申请证书的方式,本文只是测试,直接申请证书,不自动续期。执行以下命令:
sudo /usr/local/bin/certbot-auto certonly --nginx
选择1,我们刚刚设置的域名,按回车。
等待几秒之后,证书已经申请好了。惊不惊喜,意不意外?就是这么快,这么简单。
配置nginx
在nginx.conf中配置刚申请的证书,示例配置为:
server {
listen 443 ssl http2 default_server;
ssl_certificate "/etc/letsencrypt/live/test.example.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/test.example.com/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
}
将配置中的example.com替换为自己的域名,并执行:
nginx -s reload
执行完成后,访问https://test.example.com,是不是见到了浏览器的安全标示?