论如何给自己的小站加一把小绿锁

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文件

我们使用的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配置文件不是在默认目录,这个命令会因路径问题出错。

 

参考:github/certbotSzeCheng


本文被阅读了:2,755次

作者头像
关于  Ailitonia

正因站在了巨人的肩膀上,才越发觉得自己渺小。不求成为巨人,但求与其同行。 把自己所见所闻,记录下来。

→查看所有由Ailitonia发布的文章