论如何给自己的小站加一把小绿锁
1.准备
没什么好准备的,Python 2.7+git就行了
需要将域名解析到当前VPS主机IP中!
注意申请时关闭nginx服务器以免80端口被占用导致无法验证
2.获取证书
首先下载证书获取工具
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
先安装certbot:
./certbot-auto --install-only
直接申请证书。一步搞定,就是这么简单:
./certbot-auto certonly --standalone --email [email protected] -d example.com -d www.example.com
如有疑问查看帮助
./certbot-auto --help all
在完成Let’s Encrypt证书的生成之后,我们会在”/etc/letsencrypt/live/域名/”目录下有4个文件就是生成的密钥证书文件。
cert.pem – Apache服务器端证书
chain.pem – Apache根证书和中继证书
fullchain.pem – Nginx所需要ssl_certificate文件
privkey.pem – 安全证书KEY文件
chain.pem – Apache根证书和中继证书
fullchain.pem – Nginx所需要ssl_certificate文件
privkey.pem – 安全证书KEY文件
我们使用的Nginx环境,那就需要用到fullchain.pem和privkey.pem两个证书文件。
3.配置SSL
nginx配置
修改站点的配置:
server {
# SSL configuration
listen 443 ssl;
listen [::]:443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
try_files $uri $uri/ =404;
}
}
仅限Https访问
有了Https,我们一般也就不想要http的访问了,或者说想把所有的http请求转为https。方法有很多种,我的方法是使用rewrite,把原先的Http全部转化为Https。
一个例子如下:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name test.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
禁止IP直接访问
#禁止IP访问
server
{
listen 80 default;
server_name _;
return 500;
}
自此,个人小站的小绿锁就加上了。
4.证书续期
Let’s Encrypt 生成的免费证书为3个月时间,使用 certbot renew 可以无限免费续签 Https 证书。
为了方便,我们可以使用crontab进行自动续期。注意在使用certbot renew的时候,要先关闭nginx才能成功。
直接使用命令:
./certbot-auto renew
就可以了
其他有的说利用命令更新:
./certbot-auto certonly --renew-by-default --email [email protected] -d example.com -d www.example.com
似乎不适用于lnmp脚本所安装的环境,lnmp安装的nginx配置文件不是在默认目录,这个命令会因路径问题出错。
本文被阅读了:3,140次