随着谷歌浏览器的升级, 并且将所有的 HTTP 协议网站标注为不安全和 DNS 劫持越来越猖狂, 决定将 http 协议改成 https 协议, 当然最主要还是有免费的可以使用, 用 https, 首先就得知道下 SSL 证书:

SSL 证书需要向国际公认的证书证书认证机构(简称CA,Certificate Authority)申请。
CA 机构颁发的证书有3种类型:
域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;
企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高

对于个人博客来说,只需要申请一个域名型SSL证书(DV SSL)就足够了, 这里推荐个腾讯云免费 GeoTrust DV SSL 证书, 申请链接: https://console.qcloud.com/ssl , 申请过程很简单, 就不在赘述了.

申请成功后, 在证书管理里可以下载到相关证书, 里面有 3 个文件夹, 分别对应 IIS, Apache 和 Nginx 的证书文件

因为本站用的是 Vue2 的 SSR 加上 Nginx 的反向代理, 所以这里就以此为例子:

1, 将 Nginx 文件夹下的两个证书文件上传到 nginx 配置文件夹, 即和 nginx.conf 在同一目录

2, 修改虚拟主机的配置文件:

server {
    listen 443;
    server_name yourdomain.com;
    ssl on;
    ssl_certificate 1_www.xxx.com_bundle.crt; #这里改成对应的文件名
    ssl_certificate_key 2_www.xxx.com.key; #这里改成对应的文件名
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
    ssl_prefer_server_ciphers on;

    location ~ ^/(static|upload)/  {
         root /home/web/your-web-dir/dist;
         expires 30d;
    } # 配置静态文件直接走 nginx, 不走反向代理
    location / {
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host  $http_host;
         proxy_set_header X-Nginx-Proxy true;
         proxy_set_header Connection "";
         proxy_pass http://127.0.0.1:8080;
    }
}

3, 添加 http 自动转向 https

server {
    listen 80;
    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
}

4, 最终配置

server {
    listen 80;
    listen 443;
    server_name yourdomain.com;
    ssl on;
    ssl_certificate 1_www.xxx.com_bundle.crt; #这里改成对应的文件名
    ssl_certificate_key 2_www.xxx.com.key; #这里改成对应的文件名
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
    ssl_prefer_server_ciphers on;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
     location ~ ^/(static|upload)/  {
         root /home/web/your-web-dir/dist;
         expires 30d;
    } # 配置静态文件直接走 nginx, 不走反向代理
    location / {
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host  $http_host;
         proxy_set_header X-Nginx-Proxy true;
         proxy_set_header Connection "";
         proxy_pass http://127.0.0.1:8080;
    }
}

不是用反向代理的, 一般只要改下 location / {}里的配置就行了.

5, 保存配置文件

6, nginx -t 测试下配置文件是否正确

7, nginx -s reload重启 Nginx

8, 输入自己的域名, 如果能正常跳转到 https, 并且能打开网站, 说明配置成功

注意: 配置 SSL 后, 网站里所有静态资源都必须以 https 为协议, 不能用 http 协议的 cdn 地址

发表评论
wind中
你好,申请腾讯ssl 解析成功,等待指定CA机构扫描需要多长时间?
min1214821
女神就是厉害
stkang90
thanks