使用Oneinstack实现TLS1.3部署

一直在使用OneInstack,一直为网站部署了SSL,随着TLS1.3的草案落实发布,Openssl也发布了多个草案适配的TLS1.3的OPENSSL测试版套件。本文在此提供一种方案实现部署TLS1.3实现draft 23.

1.按照OneInstack网站下载WEB运维脚本源码,解压。

2.修改根目录下versions.txt文件,修改Openssl和NGINX版本要求,目前是为了下载适用的openssl-1.1.1-pre2版本和NGINX版本

nginx_ver=1.13.11
openssl_ver=1.1.1-pre2

3.修改oneinstack源码中./include/check_download.sh文件中openssl-1.1.1-pre2下载连接,由于新版本的openssl-1.1.1-pre3和pre4版本的发布,openssl官网上的pre2的连接更新至:https://www.openssl.org/source/old/1.1.1/openssl-1.1.1-pre2.tar.gz

  echo "Download openSSL..."
  src_url=https://www.openssl.org/source/old/1.1.1/openssl-${openssl_ver}.tar.gz && Download_src

 

4.按照以上设置,按照正常的oneinstack安装程序安装会出现x25519-x86_64一个文件的编译错误,是由于在openssl-1.1.1-pre2源码中一直存在一个错误:在./crypto/ec/asm/x25519-x86_64.pl 文件中末尾存在一个变量错误,更正如下:

close STDOUT;

考虑下载的覆盖问题,我建议直接下载openssl-1.1.1-pre2源码修改完成打包文件名为openssl-1.1.1-pre2.tar.gz直接放置于oneinstack源码中./src文件夹中。安装时候才不会下载源码覆盖。

5.完成以上后可以正常安装编译。完成后新建vhost网站,修改nginx对应的conf设置:

  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;

修改完成重启nginx

6.设置浏览器支持tls1.3

目前最新版 Chrome 和 Firefox 都支持 TLS 1.3,但需要手动开启:

  • Chrome,将 chrome://flags/ 中的 Maximum TLS version enabled 改为 TLS 1.3(Chrome 62 中需要将 TLS 1.3 改为 Enabled (Draft));
  • Firefox,将 about:config 中的 security.tls.version.max 改为 4

目前ssllabs和myssl两个ssl检测网站都无法识别tls1.3 draft 23,因此检测不到TLS1.3.

至此,网站已经正常启用TLS1.3

 

LibreSSL 替代OPENSSL

LibreSSL

开发者 OpenBSD计划
稳定版本 2.0.3 / 2014年7月21日;3天前
开发状态 进行中
编程语言 C,汇编语言
操作系统 OpenBSD、FreeBSD、Linux、Mac OS X、Solaris
类型 安全库
许可协议 Apache许可证1.0、4句BSD许可证、ISC许可证,部份为公有领域
网站 http://www.libressl.org
LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,[1][2][3]目标是重构OpenSSL的代码,以提供一个更安全的替代品。[4]LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。[5]

历史编辑

在裁剪代码的第一周,分支中删除了超过90,000行的C代码。[6][7]旧的或无用的代码已被删除,对较老或目前罕见操作系统的支持也一并被卸载。LibreSSL的最初开发目的是作为OpenBSD 5.6中的OpenSSL预期替代品,一旦库的精简版稳定下来,它还有望移植至其他平台。[8]截至2014年4月,该项目仍在寻求“稳定的”外部资金承诺。[7]

变化编辑

更详细地说,迄今为止,一些较显着和重要的变化包括更换自定义的内存调用为标准函数(例如strlcpy、calloc、asprintf、reallocarray等)。[9][10]这有助于将来用更先进的内存分析工具,或仅通过观察程序的崩溃来发现缓存溢出错误。CVS提交日志中也记录了潜在双重释放内存的修复(包括空指针值的显式分配)。[11]不安全的种子生成方法(借助于内核自己原生提供的功能)被替换掉,以确保基于随机数生成器的方法使用了正确的随机数种子。额外的完整性检查也被加入进来,以检查长度参数、无符号到有符号变量的赋值、指针值/方法返回值等数据的有效性。一些使之更加安全的编译器选项和标志也有助于发现潜在问题,以使其能被及早修复(-Wuninitialized,-Werror等)。

为符合良好的编程风格,项目也增强了代码可读性及清理空白字符(KNF)。卸载对不需要平台的支持(MacOS、Netware、OS/2、VMS、Microsoft Windows等),以消除潜在的安全隐患。卸载不必要或不安全的#define语句和变量。卸载未使用的或旧的程序集、应用程序、演示及文档文件/代码(Perl脚本、C语言文件等)。卸载对FIPS支持、不安全的算法(Dual_EC_DRBG)及旧的协议/加密器(SSLv2)。对不必要的方法包装和宏的修改也有助于增强可读性(Error & BIO(I/O抽象)库)。

最后并同样重要的,复刻的一个主要原因是OpenSSL团队的不合作态度,之前几年提交的漏洞补丁不是没注意到就是被忽略了。提交日志显示LibreSSL修复了这些较旧的漏洞。[12]

开发者 OpenBSD计划
稳定版本 2.0.3 / 2014年7月21日;3天前
开发状态 进行中
编程语言 C,汇编语言
操作系统 OpenBSD、FreeBSD、Linux、Mac OS X、Solaris
类型 安全库
许可协议 Apache许可证1.0、4句BSD许可证、ISC许可证,部份为公有领域
网站 http://www.libressl.org
LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,[1][2][3]目标是重构OpenSSL的代码,以提供一个更安全的替代品。[4]LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。[5]

历史编辑

在裁剪代码的第一周,分支中删除了超过90,000行的C代码。[6][7]旧的或无用的代码已被删除,对较老或目前罕见操作系统的支持也一并被卸载。LibreSSL的最初开发目的是作为OpenBSD 5.6中的OpenSSL预期替代品,一旦库的精简版稳定下来,它还有望移植至其他平台。[8]截至2014年4月,该项目仍在寻求“稳定的”外部资金承诺。[7]

变化编辑

更详细地说,迄今为止,一些较显着和重要的变化包括更换自定义的内存调用为标准函数(例如strlcpy、calloc、asprintf、reallocarray等)。[9][10]这有助于将来用更先进的内存分析工具,或仅通过观察程序的崩溃来发现缓存溢出错误。CVS提交日志中也记录了潜在双重释放内存的修复(包括空指针值的显式分配)。[11]不安全的种子生成方法(借助于内核自己原生提供的功能)被替换掉,以确保基于随机数生成器的方法使用了正确的随机数种子。额外的完整性检查也被加入进来,以检查长度参数、无符号到有符号变量的赋值、指针值/方法返回值等数据的有效性。一些使之更加安全的编译器选项和标志也有助于发现潜在问题,以使其能被及早修复(-Wuninitialized,-Werror等)。

为符合良好的编程风格,项目也增强了代码可读性及清理空白字符(KNF)。卸载对不需要平台的支持(MacOS、Netware、OS/2、VMS、Microsoft Windows等),以消除潜在的安全隐患。卸载不必要或不安全的#define语句和变量。卸载未使用的或旧的程序集、应用程序、演示及文档文件/代码(Perl脚本、C语言文件等)。卸载对FIPS支持、不安全的算法(Dual_EC_DRBG)及旧的协议/加密器(SSLv2)。对不必要的方法包装和宏的修改也有助于增强可读性(Error & BIO(I/O抽象)库)。

最后并同样重要的,复刻的一个主要原因是OpenSSL团队的不合作态度,之前几年提交的漏洞补丁不是没注意到就是被忽略了。提交日志显示LibreSSL修复了这些较旧的漏洞。[12]