http迁移到https

2018/04/23

安装证书

本文主要介绍利用 Let’s Encrypt获取免费证书。

使用 Let’s Encrypt 证书,首先需要下载Certbot,下载地址如下:

https://certbot.eff.org/

对于不同的系统和服务器,该平台都有相对应的操作步骤说明。

安装好certbot后,就开始安装证书了。

首先,在网站根目录下创建一个.well-known的目录。这个目录,在安装证书的时候,certbot会进行访问。如下是在nginx默认的根目录创建.well-known目录。

mkdir -p /usr/share/nginx/html/.well-known

然后,安装证书。如下:

certbot certonly --webroot -w /usr/share/nginx/html -d test.example.com

上面test.example.com处,在你操作时请改为你自己的域名。

在安装的过程中,它会让你输入一些信息,比如邮箱地址,这时你按提示输入就好。根据提示进行操作,一般可以正常生产证书文件。证书文件存放在: ‘/etc/letsencrypt/live/test.example.com/’下。会有4个文件:

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

配置服务器

证书安装完成后,就要开始配置服务器了,如下是配置nginx的操作:

server {
  listen 443 ssl http2;
  server_name test.example.com;
  index index.html index.htm index.php;
  root /usr/share/nginx/html;

  ssl_sertificate      /etc/letsencrypt/live/test.example.com/fullchain.pem;
  ssl_certificate_key    /etc/letsencrypt/live/test.example.com/privkey.pem;

  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  access_log off;
}

重定向

nginx配置:

server {
  listen 80;
  server_name domain.com www.domain.com;
  return 301 https://domain.com$request_uri;
}

apache配置:

RewriteEngine On;
RewriteCond %{HTTPS} off;
RewriteRule (.\*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
}

注意事项

需要注意的是:Let’s Encrypt 的证书有效期为90天,因此,你必须定时更新证书,才能保证https长期正常。解决这个问题,你可以使用crontab定时器,如下:

10 6 * * * /bin/certbot renew --quiet &>/dev/null

到此时,https已经迁移完成。

目录