ssl_ciphers 配置详解

本文分享自天翼云开发者社区《ssl_ciphers 配置详解》.作者:李****壮

一、配置方式

ssl_ciphers ciphers;

默认值:ssl_ciphers HIGH:!aNULL:!MD5;

上下文:http,server

作用:设置服务器建立与客户端请求https连接时,服务器可支持的ssl加密套件,可避免使用不安全的过时的加密算法。ssl_ciphers配置项的可选值由nginx编译时,引用的openssl组件 的ciphers定义。不同版本的openssl组件,可支持的加密套件也有所区别。

二、可选值详解

ssl_ciphers指令取值依赖于openssl库,因此可以直接用openssl工具来更方便的查看加密套件,验证取值。指令如下:

openssl ciphers -v -ssl2 -ssl3 -tls1 cipherlist

-v:详细列出所有加密套件。包括ssl版本(SSLv2、SSLv3以及 TLS)、密钥交换算法、身份验证算法、对称算法、摘要算法。

-ssl2:只列出SSLv2使用的加密套件。

-ssl3:只列出SSLv3使用的加密套件。

-tls1:只列出tls使用的加密套件。

cipherlist:列出一个cipher list的详细内容。用此项能列出所有符合规则的加密套件,如果不加-v选项,它只显示各个套件名字;

2.1 算法列表(cipherlist)格式

算法列表包含一个或多个冒号隔开的<cipher strings>。逗号或空格是可接受的分隔符,但是冒号是普遍使用的。

真实的算法字符串可以是不同算法组件的组合。也可以包含一个简单的算法组件,例如AES256-RSA256。

之后示例中B<>表示强调<>内的内容是算法列表符号,真实值为<>内的内容。

一个算法组件包含某几个算法,或者算法套件的几个类型值。例如B<SHA1>代表所有的算法套件中的摘要算法为SHA1;B<SSLv3>代表所有的SSL v3相关的算法。

一个算法组件可以用B<+>字符把简单的算法字符连接起来。这是一个符合逻辑的B<and>操作。例如,B<SHA1+DES>代表所有同时包含SHA1和DES的算法套件。可以在每个算法字符串之前使用字符B<!>、B<->或 B<+>。

如果使用字符B<!>,则从算法列表中删除该算法。根据明确的规定,删除了的算法将不会再出现。

如果使用字符B<->,则从算法列表中删除该算法。但是可以通过后面的选项将一个或所有的算法可以被再次添加。

如果使用字符B<+>,则将该算法移到算法列表的末尾。这个选项不会添加任何新的算法,它只是紧紧的移动匹配的已经存在的算法。

如果没有上述字符被提出,则该字符串则作为一个算法列表中的一部分则仅仅被解释。如果这个列表包含的算法已经被删除,则他们将被忽略:因为他们不会被移到列表的末尾。

此外,算法字符串B<@STRENGTH>可以被用于到分类,可以让符合条件的算法按加密算法的长度分类(输出时会聚合在一起)。

2.2 取值

下面是合法的算法字符串以及他们的详细解释:

B<DEFAULT>:默认的算法列表。这个在编译的时候决定,OpenSSL1.0.0以上的版本默认的是B<ALL:!aNULL:!eNULL>。这个必须是第一个有详细说明的算法字符串。

B<COMPLEMENTOFDEFAULT>:这个算法包含B<ALL>,但没有被默认激活。目前它的值是B<ADH>。需要注意的是这个规则不包括B<eNULL>(它不被包含在B<ALL>中)。

B<ALL>:所有的算法套件但是不包括B<eNULL>算法,因为B<eNULL>算法必须被明确的激活。作为OpenSSL的一部分,B<ALL>算法套件被合理的被设置为默认算法套件。

B<COMPLEMENTOFALL>:这个算法套件不激活B<ALL>,目前仅仅包含B<eNULL>算法。

B<HIGH>:"high"加密算法套件。目前意味着密钥长度值大于128位,目前一些算法套件是128字节的密钥。

B<MEDIUM>:"medium"加密算法套件。目前一些算法套件是128字节的加密。

B<LOW>:"low"加密算法套件。目前使用64位或56位密钥的加密算法,但是不包括export系列的算法套件。

B<EXP>, B<EXPORT>:export系列的加密算法。包含40字节和56字节的算法。

B<EXPORT40>:40字节的加密算法。

B<EXPORT56>:56字节的加密算法。在OpenSSL0.9.8c版本以后后面的版本中56字节的export算法是空的,除非OpenSSL明确的表明支持实验性的算法。

B<eNULL>,B<NULL>:"NULL"类型的算法,它表明不用进行任何加密操作。如果要显示包含的数据则存在一些安全风险。

B<aNULL>:算法套件中没有验证算法。当前它是一个匿名的DH算法。这些算法套件是易受到中间攻击的,于是不建议使用它。

B<kRSA>, B<RSA>:用RSA密钥来进行密钥交换。

B<kEDH>:使用短暂的DH密钥协议。

B<kDHr>, B<kDHd>:算法套件使用DH密钥协议和CA分别用RSA和DSS密钥签名的DH证书。目前没有进行运用。

B<aRSA>:用RSA密钥来执行验证操作。证书携带RSA密钥。

B<aDSS>, B<DSS>:用DSS密钥来执行验证操作。证书携带DSS密钥。

B<aDH>:用DH密钥来执行验证操作。证书携带DH密钥。目前没有进行运用。

B<kFZA>, B<aFZA>, B<eFZA>, B<FZA>:用FORTEZZA密钥来进行密钥交换、验证、加密。目前没有进行运用。

B<TLSv1>, B<SSLv3>, B<SSLv2>:TLS v1.0, SSL v3.0 or SSL v2.0算法套件。

B<DH>:算法套件使用DH算法,包括匿名的DH。

B<ADH>:匿名的DH算法套件。

B<AES>:算法套件使用AES算法。

B<CAMELLIA>:算法套件使用CAMELLIA算法。

B<3DES>:算法套件使用3des算法。

B<DES>:算法套件使用des算法。

B<RC4>:算法套件使用rc4算法。

B<RC2>:算法套件使用rc2算法。

B<IDEA>:算法套件使用IDEA算法。

B<SEED>:算法套件使用SEED算法。

B<MD5>:算法套件使用MD5算法。

B<SHA1>, B<SHA>:算法套件使用SHA算法。

B<aGOST>:算法套件使用GOST R 34.10 (either 2001 or 94)来执行验证操作(需要一个支持GOST算法的硬件引擎)。

B<aGOST94>:算法套件使用GOST R 34.10-94来执行验证操作(注意R 34.10-94的标准已经过期了,建议使用GOST R 34.10-2001)。

B<kGOST>:用VKO 34.10来执行密钥交换操作。在RFC4357中指定。

B<GOST94>:算法套件,用基于GOST R 34.11-94的HMAC算法。

B<GOST89MAC>:算法套件,用GOST 28147-89摘要算法来代替HMAC。

2.3 实测

cipherlist部分用单引号包含字符串,避免!被 bash转义

Kx 密钥交换算法 :用来协商回话密钥

Au 验证算法 :用来验证服务端身份

Enc对称加密算法:加密消息

Mac摘要算法:防消息篡改

支持RSA的所有算法套件

ssl_ciphers 默认取值包含的算法

三、验证方式

通过以上说明,可以配置一条符合客户需求的加密套件取值,之后就需要进行算法的验证,看是否符合客户需求

可以通过如下命令,请求nginx,看加密条件是否符合预期

openssl s_client -cipher <cipherlist> -connect <ip:port> -servername <domain>

如上说明,服务器不支持该算法套件

如上说明 本地的openssl工具不包含该算法套件,可能属于淘汰已废弃,也可能算法属于实验性算法,未包含。注意openssl工具与nginx使用的openssl组件,可能版本不一致,包含的算法套件有所差别。

如上表示服务器支持该加密套件

相关推荐
Patrick_Wilson9 天前
从一次 Safari 白屏,聊聊 CDN 外置 React 的坑与前端监控盲区
前端·react.js·cdn
姚不倒11 天前
从 A 记录到 CDN 切换:我的 DNS 认知跃迁之路
运维·cdn·dns
字节跳动视频云技术团队15 天前
AI Agent 会自己选 CDN 了:当网站访问者从 “人” 扩展到 “AI”,内容分发已升级
人工智能·cdn
Linsk15 天前
2026年了,请停止相信“公共 CDN 能提升性能”
前端·jquery·cdn
锐速网络1 个月前
游戏加速、DNS加速、CDN网络加速三者选型指南
cdn·网络优化·网络运维·游戏加速·dns加速·运维选型·长连接加速
锐速网络1 个月前
CDN视频加速集群部署与性能调优
cdn·网络优化·视频加速·流媒体加速·直播cdn·cdn集群部署·锐速安全
mCell2 个月前
别急着骂运营商,你家路由器里可能藏着一台 PCDN 盒子
前端·http·cdn
云安全干货局2 个月前
怎么选择靠谱的CDN服务品牌?主流品牌性能对比及加速效果解析
cdn·安全加速·云加速·业务加速·edge scdn
SEO_juper2 个月前
CDN 地域节点优化:匹配 GEO 信号,提升加载速度
服务器·ai·php·seo·cdn·geo·谷歌优化
Love Song残响2 个月前
PowerSetting下载慢?CDN加速 + 离线包分发综合优化方案
cdn