获取配置LET’S ENCRYPT(CERTBOT)的免费HTTPS证书
目录
维基百科介绍
Let’s Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的SSL/TLS证书。
Let’s Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务。主要赞助商包括电子前哨基金会,Mozilla基金会,Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。
用以实现这一新的数字证书认证机构的协议被称为自动证书管理环境(ACME)。[4] GitHub上有这一规范的草案,且提案的一个版本已作为一个Internet草案发布。
Let’s Encrypt 宣称这一过程将十分简单、自动化并且免费。
安装Let’s Encrypt(certbot)
GitHub地址:https://github.com/certbot/certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --help
./certbot-auto –help 这步安装依赖环境并初始化,可能需要等待较长时间,我实际等待了1分钟。
获取证书
./certbot-auto certonly --webroot --agree-tos -v -t --email [email protected] -w /home/wwwroot/abc.com -d abc.com
使用docker获取
docker run -it --rm --name certbot \
-v /etc/letsencrypt:/etc/letsencrypt \
-v /var/log/letsencrypt:/var/log/letsencrypt \
-v /home:/home \
certbot/certbot certonly --webroot --agree-tos -v -t --email [email protected] \
-w /home/wwwroot/abc.com -d abc.com
请根据自己的实际情况修改。
-w /home/wwwroot/abc.com
这个是你网站目录的根目录,同时你这个目录需要浏览器可以访问。
配置nginx
server
{
listen 80;
server_name blog.abc.com;
location / {
return 301 https://$host$request_uri;
}
}
server
{
listen 443 ssl;
server_name blog.abc.com;
index index.html index.htm index.php;
root /home/wwwroot/blog.abc.com;
autoindex on;
autoindex_exact_size off;
try_files $uri $uri/ /index.php?$uri&$args;
ssl_certificate /etc/letsencrypt/live/blog.abc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.abc.com/privkey.pem;
ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-1:28-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/blog.abc.com/chain.pem;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
location ~ .*\.(php|php5)?$
{
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 365d;
}
location ~ .*\.(js|css)?$
{
expires 365d;
}
location /status {
stub_status on;
access_log off;
}
access_log /home/wwwlogs/blog.abc.com.log access;
}
最后重载一下nginx的配置。
[code lang="shell"]
/etc/init.d/nginx reload
[/code]
Let’s Encrypt续签
./certbot-auto renew
使用docker
docker run -it --rm --name certbot -v /etc/letsencrypt:/etc/letsencrypt -v /var/log/letsencrypt:/var/log/letsencrypt -v /home:/home certbot/certbot renew
或者自动重载nginx,适合加到计划任务里面。
./certbot-auto renew --post-hook "service nginx reload"