为个人网站升级TLS 1.3以及HSTS

理论相关

TLS

TLS简介

SSL(Secure Sockets Layer) 安全套接层,是一种安全协议,经历了 SSL 1.0、2.0、3.0 版本后发展成了标准安全协议——TLS (Transport Layer Security) 传输层安全性协议。TLS 有 1.0 (RFC 2246)、1.1(RFC 4346)、1.2(RFC 5246)、1.3(RFC 8446) 版本。

TLS 在实现上分为 记录层 和 握手层 两层,其中握手层又含四个子协议: 握手协议 (handshake protocol)、更改加密规范协议 (change cipher spec protocol)、应用数据协议 (application data protocol) 和警告协议 (alert protocol)。TLS模型图如下。


image

TLS 1.3与TLS 1.2对比

互联网工程任务组(IETF)是负责定义TLS协议的组,该协议经历了多次迭代。先前版本的TLS,TLS 1.2,在RFC 5246中定义, 并且在过去八年中已被大多数Web浏览器使用。在2018年3月21日,经过28次草案后,TLS 1.3已经完成。截至2018年8月,TLS 1.3的最终版本现已发布(RFC 8446)。

Cloudflare等公司已经向其客户提供TLS 1.3。Filippo Valsorda就TLS 1.2和TLS 1.3之间的差异进行了很好的讨论。简而言之,TLS 1.3与TLS 1.2的主要优点是速度更快,安全性更高。

TLS 1.3速度优势

在Web性能方面,TLS和加密连接总是增加了一些开销。HTTP / 2肯定有助于解决这个问题,但TLS 1.3通过TLS错误启动和零往返时间(0-RTT)等功能帮助加速加密连接。

简单地说,使用TLS 1.2,需要两次往返才能完成TLS handshake。使用1.3时,它只需要一次往返, 从而将加密延迟减少一半。这会使这些加密连接感觉比以前更快一点。TLS1.3与TLS1.2握手示意图如下。


image

TLS 1.3浏览器支持

最新版本的Chrome以及FireFox都已经默认支持TLS 1.3,Safari在macOS High Sierra中已经默认支持TLS 1.3。

HSTS

什么是HSTS

HSTS的全称是HTTP Strict-Transport-Security,它是一个Web安全策略机制(web security policy mechanism)。
HSTS最早于2015年被纳入到ThoughtWorks技术雷达,并且在2016年的最新一期技术雷达里,它直接从“评估(Trial)”阶段进入到了“采用(Adopt)”阶段,这意味着ThoughtWorks强烈主张业界积极采用这项安全防御措施,并且ThoughtWorks已经将其应用于自己的项目。

HSTS核心思想

HSTS最为核心的是一个HTTP响应头(HTTP Response Header)。正是它可以让浏览器得知,在接下来的一段时间内,当前域名只能通过HTTPS进行访问,并且在浏览器发现当前连接不安全的情况下,强制拒绝用户的后续访问要求。
HSTS Header的语法如下:
Strict-Transport-Security: <max-age=>[; includeSubDomains][; preload]

  • max-age是必选参数,是一个以秒为单位的数值,它代表着HSTS Header的过期时间,通常设置为1年,即31536000秒。
  • includeSubDomains是可选参数,如果包含它,则意味着当前域名及其子域名均开启HSTS保护。
  • preload是可选参数,只有当你申请将自己的域名加入到浏览器内置列表的时候才需要使用到它。

升级TLS 1.3以及HSTS教程(服务器操作系统为Debian 4.9.51-1)

TLS 1.3

关闭以及备份现有Nginx

输入如下命令即可(提前将nginx加入path路径):

nginx -s stop && cd /usr/local && mv nginx nginx-bak

下载相关源码以及安装依赖环境

下载以及解压Nginx

wget http://nginx.org/download/nginx-1.15.8.tar.gz && tar -zxvf nginx-1.15.8.tar.gz

下载以及解压OpenSSL

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz && tar -zxvf openssl-1.1.1a.tar.gz

安装相关依赖

apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev liblua5.1-dev libluajit-5.1-dev libgeoip-dev google-perftools libgoogle-perftools-dev

为Nginx以及OpenSSL打补丁

OpenSSL

pushd openssl-1.1.1a
curl https://raw.githubusercontent.com/hakasenyang/openssl-patch/master/openssl-equal-1.1.1a_ciphers.patch | patch -p1
curl https://raw.githubusercontent.com/hakasenyang/openssl-patch/master/openssl-1.1.1a-chacha_draft.patch | patch -p1
popd
image

Nginx

pushd nginx-1.15.8
curl https://raw.githubusercontent.com/kn007/patch/d6bd9f7e345a0afc88e050a4dd991a57b7fb39be/nginx.patch | patch -p1
curl https://raw.githubusercontent.com/hakasenyang/openssl-patch/master/nginx_strict-sni.patch | patch -p1
image

编译安装Nginx

使用以下命令生成MakeFile,注意--with-openssl=openssl路径

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-stream_ssl_module --with-http_v2_module --with-threads --with-http_v2_hpack_enc --with-http_spdy_module --with-openssl=~/openssl-1.1.1a
image

image

编译以及安装Nginx

输入如下命令即可,如下图即安装成功。

make && make install
image

image

配置Nginx以启用TLS 1.3

输入以下命令,拷贝之前备份的nginx.conf。

cp -f /usr/local/nginx-bak/conf/nginx.conf /usr/local/nginx/conf

输入以下命令打开nginx.conf并按照图示修改即可启用TLS 1.3(注意:去掉所有的ssl on字段,否则会报警告)

nano conf/nginx.conf
image

HSTS

打开nginx.conf并按照图示修改即可启用HSTS

image

测试

输入以下命令,输出如图即可确定nginx.conf文件没有错误

nginx -t
image

启动Nginx,无输出即正常

nginx

登录https://www.ssllabs.com, 输入域名,如下图即支持,说明TLS 1.3以及HSTS升级成功!!!

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容