December 3, 2017 /HTTPS
Let’s Encrypt 是一个免费、自动化和开放的权威机构,它是由非盈利组织 Internet Security Research Group (ISRG,互联网安全研究小组) 提供的一个服务。为了创建一个更加安全和保护隐私的网络,它向人们免费提供HTTPS(SSL/TLS)所需要的数字证书。Let’s Encrypt受到了Mozilla、Chrome、Akamai和CISCO等的支持。
本文使用一个开源工具 acme.sh 来申请证书,acme.sh是一个用Shell脚本编写的 ACME (Automatic Certificate Management Environment,自动化证书管理环境)协议客户端,Let’s Encrypt正是使用ACME协议进行证书签发。
- sudo apt - get install openssl
- curl https://get.acme.sh | sh
Let’s Encrypt需要验证域名,因此需要先修改Nginx配置,增加中间的 location ^~ .well-known/acme-challenge 部分。如果有多个域名的话,记得对每个域名都做修改。
- server {
- listen 80;
- server_name jeoygin.org;
- location ^ ~ / .well - known / acme - challenge / {
- root /
- var / www / challenges / ;
- try_files $uri = 404;
- }
- location / {
- return 301 https: //$host$request_uri;
- }
- }
重新加载Nginx配置,然后执行acme.sh签发证书:
- sudo usermod -a -G www-data $USER
- sudo mkdir -m 774 /var/www/challenges
- sudo chown www-data:www-data /var/www/challenges
- sudo nginx -s reload
- ~/.acme.sh/acme.sh --issue -d jeoygin.org -d wiki.jeoygin.org \
- -d file.jeoygin.org -d img.jeoygin.org -w /var/www/challenges
安装证书并重新加载Nginx配置:
- sudo mkdir -m 774 /var/www/ssl
- sudo chown -R www-data:www-data /var/www/ssl
- acme.sh --install-cert -d jeoygin.org \
- --key-file /var/www/ssl/key.pem \
- --fullchain-file /var/www/ssl/cert.pem \
- --reloadcmd "service nginx force-reload"
增加Nginx SSL配置:
- server {
- listen 443 ssl;
- server_name jeoygin.org;
- error_page 404 /404.html;
- ssl_certificate /var/www/ssl/cert.pem;
- ssl_certificate_key /var/www/ssl/key.pem;
- location / {
- root /var/www/jeoygin.org/public_html/;
- index index.html index.htm;
- }
- access_log /var/log/nginx/jeoygin.org.log;
- }
- server {
- listen 80;
- server_name jeoygin.org;
- location ^~ /.well-known/acme-challenge/ {
- root /var/www/challenges/;
- try_files $uri =404;
- }
- location / {
- return 301 https://$host$request_uri;
- }
- }
重新加载Nginx配置:
- sudo nginx - s reload
来源: http://www.tuicool.com/articles/UrIZFvN