http升级https

Chrome将于2018年7月发布Chrome 68,这一次会将所有HTTP站点标记为“不安全”,提示用户可能存在的风险。促使加快SSL证书的部署。尽早部署https。为Let’s Encrypt社区提交了一个BUG。

SSL类型

EV SSL证书(Extended Validation SSL Certificate)

此证书只起到网址加密和验证网站域名所有权信息,无法向用户证明网站真实身份。不推荐包含具有交易信息的网站部署。(本网站SSL安装的是Let’s Encrypt的免费SSl)

OV SSL证书(Organization Validation SSL Certificate)

验证网站所有单位的真实身份的标准型SSL证书,此类证书也就是正常的SSL证书,不仅能起到网站机密信息加密的作用,而且能向用户证明网站的真实身份。

DV SSL证书(Domain Validation SSL Certificate

此证书为全球统一的严格身份验证标准颁发的SSL证书,是目前业界最高安全级别的SSL证书,推荐具有交易信息的网站部署。

为什么要安装SSL

有时候在浏览不具备SSl的网站会被运营商DNS劫持,出现一些不是本网站的广告误导浏览者。如果对浏览者产生损失会对自己网站产生极大的影响。反之安装SSL后服务器>>>浏览器的通信通道为加密的,运营商反之无法插入广告等,当然也加强了其安全性。

笔记

网上安装方法千千万,我不想多说。但是在nginx的配置上有些自己的见解。

我的配置文件在/etc/nginx/conf.d/default.conf当然有些在/etc/nginx/nginx.conf更改配置是时候最好备份下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

server {
listen 80;
server_name www.tingtashuo.cn;
#永久重定向到 https 站点
return 301 https://$server_name$request_uri;
}
server {
listen 80;
server_name www.tingtashuo.cn;

#以下配置用于Let's Encrypt服务端和客户端校验目录配置
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /home/git/www;
}
location = /.well-known/acme-challenge/ {
return 404;
}

#永久重定向到https站点
return 301 https://$server_name$request_uri;
}


server {
#启用 https, 使用 http/2 协议
listen 443 ssl http2;

#ssl
#证书路径
ssl_certificate /etc/letsencrypt/live/www.tingtashuo.cn/fullchain.pem;
#私钥路径
ssl_certificate_key /etc/letsencrypt/live/www.tingtashuo.cn/privkey.pem;
#可选的加密算法,顺序很重要,越靠前的优先级越高
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:!ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:HIGH:!RC4-SHA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!CBC:!EDH:!kEDH:!PSK:!SRP:!kECDH;
#在 SSLv3 或 TLSv1 握手过程一般使用客户端的首选算法,如果启用下面的配置,则会使用服务器端的首选算法.
ssl_prefer_server_ciphers on;

#以下与证书无关了
location /{
#...省略
}
}

BUG

在执行sudo ./certbot-auto renew --dry-run(测试)命令时出现问题。

1
2
3
error: ‘ascii’ codec can’t decode byte 0xe6 in position 1: ordinal not in range(128). 

# 社区正在解决问题。搜索了众多资料应该是python编码出现了问题,读取编码文件时其他国家语言不能被读取。(除英语)

论坛连接

目前解决方法删除所有中文注释(包括nginx.conf)。