首先,先简单了解一下SSL证书:

SSL证书,用于加密HTTP协议,也就是HTTPS。它分为三种类型,域名型SSL证书(DV SSL)企业型SSL证书(OVSSL)增强型SSL证书(EVSSL)。他们的主要区别为:
其中,域名型SSL证书有很多方式可以免费申请,在这里,我们使用 SSL For Free 创建SSL证书。

如何为自己网站配置SSL证书:

1、 打开 SSL For Free, sslforfree的SSL证书支持泛域名解析,即 *.example.com(其中*代表任意字符, examlpe.com为示例网址)。若想添加多个域名,可用空格将两个域名间隔开,所以,我们在地址栏可以输入:
example.com *.example.com
然后点击后面的Create Free SSL Certificate按钮

2、接下来,我们要验证该域名的所有权,点击下面的 Manually Verify Domain:

可以获得该域名的验证方式:

3、这里提供的是域名TXT解析验证,我们需要登录到域名所在的账号下,进行TXT解析。其中,主机记录为 _acme-challenge,不要添加后面的 .example.com;记录类型为TXT;线路类型默认即可;记录值填写提供的value值;TTL值由于运营商限制,最低600秒,无法修改,不过不影响使用。添加示例为:

将两个记录值添加后,记录值示例为:

4、 然后点击下面的Download SSL Certificate

若添加无误,则可验证成功,生成SSL证书,此时需要下载即可,点击下面的Download All SSL Certificate Files:

5、下载的为压缩包,里面包括ca_bundle.crt、certificate.crt、private.key。需要将certificate.crt和private.key存放到服务器,并修改nginx配置,添加这些参数,其中证书和密钥的存放路径以自己的服务器为准:

server {
  listen 80;
  #监听443端口
  listen 443 ssl http2;
  #ssl证书存放路径,以自己服务器为准
  ssl_certificate /data/wwwroot/example/.ssl/certificate.crt;
  #ssl密钥存放位置,以自己服务器为准
  ssl_certificate_key /data/wwwroot/example/.ssl/private.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;
  #服务器名,以自己服务器为准
  server_name example.com *.example.com;
  access_log /data/wwwlogs/nginx.log combined;
  index index.html index.htm index.php;
  #项目根目录路径,以自己服务器为准
  root /data/wwwroot/example/public;
  if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
  
  #error_page 404 /404.html;
  #error_page 502 /502.html;
  
  location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
  }

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
    expires 30d;
    access_log off;
  }
  location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
  }
  location ~ /\.ht {
    deny all;
  }
}

6、然后重启nginx,则可通过https打开网站了。

7、最后,这个证书只能使用90天,到期后,我们可以再次申请证书。这里提供邮箱提醒业务,我们注册一个账号,它可以在证书到期前一周提醒我们。