南琴浪博客

Nginx 启用 HTTPS 站点

11/02/2017

随着互联网的发展,个人博客如雨后春笋般冒出头来。当你的网站启用 HTTPS 后,浏览器地址栏会有 HTTPS 的绿色小锁标志。本文会介绍如何为 Nginx 启用 HTTPS ,让你的站点上绿锁。

SSL 证书

有关 SSL 可参阅维基百科 传输层安全协议 和阮一峰先生的 SSL/TLS协议运行机制的概述

SSL 证书主要有两个功能:加密和身份证明,证书分为 DV/OV/EV 三种级别。免费证书为 DV 级别,常见的可靠免费证书 CA 有 Let’s Encrypt / AlphaSSL / TrustAsia / CloudFlare

推荐2种方便的申请免费证书的方式:

  1. 腾讯云 申请
    输入域名,进行域名验证后稍等下就能拿到 TrustAsia 签发的证书,证书有效期为一年,到期后再来同样步骤申请。
    此种方法相当适合小白。缺点在于需要腾讯云帐号(实名认证)。
  2. 使用 我的 acme 脚本 申请
    步骤稍微多一点,且证书有效期只有 60 天。优势在于可以申请 ECC 证书。

Nginx 配置

server {
    listen 443;

    server_name sometimesnaive.org;

    ssl on;
    ssl_protocols TLSv1.2;

    #以下均采用绝对路径,本文用 ~/ 表示

    #LetsEncrypt-chained.cer 由站点证书在上、中间证书在下,粘贴到一个文件内组成
    ssl_certificate ~/LetsEncrypt-chained.cer;
    #LetsEncrypt.key 是你的站点证书的密钥
    ssl_certificate_key ~/LetsEncrypt.key;

    #优先采取服务器算法
    ssl_prefer_server_ciphers on;

    #定义算法
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256";

    #使用 DH 文件 迪菲-赫尔曼密钥交换(D-H,Diffie–Hellman key exchange)方案
    #生成 pem 的方法:openssl dhparam -out dhparam.pem 4096
    ssl_dhparam ~/dhparam.pem;
}

验证 HTTPS 状态

如此一来,配置就算是告一段落了
然后就可以在 ssllabs 测试自己的 SSL 评级了
以下为本站的 SSL 评级
本站的 SSL 评级