{{item}}
{{item.title}}
{{items.productName}}
{{items.price}}/年
{{item.title}}
部警SSL证书可实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或算改,提高网站可信度和品牌形象,利于SEO排名,为企业带来更多访问量,这也是网络安全法及PCI合规性的必备要求
前往SSL证书在HTTPS加密体系中,X.509数字证书是信任链的核心载体,而密钥用法(Key Usage) 字段则是证书的"权限清单",它严格定义了证书关联的公私钥对可以执行哪些密码学操作。其中,数字签名(digitalSignature) 和密钥加密(keyEncipherment) 是最基础也最容易混淆的两个核心用法,它们的技术原理、安全目标和应用场景有着本质区别。错误配置这两个字段会直接导致TLS握手失败、中间人攻击风险或证书被浏览器拒绝信任,是SSL证书部署中必须掌握的核心知识点。
密钥用法(Key Usage)是X.509 v3证书标准中定义的强制扩展字段(RFC 5280第4.2.1.3节),采用位掩码(bit mask)格式表示,每个二进制位对应一种特定的密码学操作权限。证书颁发机构(CA)在签发证书时,会根据证书的用途精确设置对应的位,客户端(浏览器、操作系统)在验证证书时,会严格检查密钥用法是否与当前操作匹配,不匹配则直接终止连接。
标准定义的9种密钥用法位如下:
| 位索引 | 字段名称 | 英文标识 | 核心作用 |
|---|---|---|---|
| 0 | 数字签名 | digitalSignature | 验证数字签名 |
| 1 | 不可否认性 | nonRepudiation | 提供不可否认服务(防抵赖) |
| 2 | 密钥加密 | keyEncipherment | 加密对称会话密钥 |
| 3 | 数据加密 | dataEncipherment | 直接加密用户数据 |
| 4 | 密钥协商 | keyAgreement | 参与密钥协商过程 |
| 5 | 证书签名 | keyCertSign | 签发下级证书(CA 证书专用) |
| 6 | CRL 签名 | cRLSign | 签发证书吊销列表(CRL) |
| 7 | 仅加密 | encipherOnly | 仅用于加密(配合 keyAgreement) |
| 8 | 仅解密 | decipherOnly | 仅用于解密(配合 keyAgreement) |
密钥用法的本质是密码学权限分离,它遵循"最小权限原则",限制了公私钥对的使用范围,即使某张证书的私钥泄露,攻击者也只能利用该证书被授权的操作,无法滥用私钥进行其他恶意行为。例如,一张仅用于服务器身份验证的证书,其私钥不能被用来签发其他证书,也不能被用来解密其他用户的加密数据。
如果没有密钥用法的限制,一张证书的私钥就可以执行所有密码学操作,这会极大地放大安全风险。历史上多次重大安全事件都与证书密钥用法配置不当有关,例如2014年的Heartbleed漏洞,攻击者利用OpenSSL的内存泄露漏洞获取了服务器证书的私钥,如果该证书同时启用了密钥加密和数字签名权限,攻击者就可以同时解密过往的加密流量和伪造服务器身份。
数字签名是非对称加密算法的反向应用,其核心逻辑是"私钥签名,公钥验证"。具体过程如下:
数字签名的安全性基于非对称加密算法的数学特性:只有持有私钥的人才能生成有效的数字签名,而任何人都可以使用公钥验证签名的有效性。
在SSL/TLS协议中,数字签名是身份认证和完整性保护的核心机制,贯穿整个握手过程:
数字签名支持多种非对称加密算法,目前主流的算法包括:
所有类型的SSL证书(DV、OV、EV)都必须启用digitalSignature位,因为服务器身份验证是SSL证书的基本功能。此外,数字签名还用于其他类型的证书:
数字签名提供了三个核心安全特性:
这三个特性是HTTPS能够安全传输敏感数据的基础,没有数字签名,HTTPS就无法防止中间人攻击。
密钥加密(也称为密钥封装)是非对称加密算法的正向应用,其核心逻辑是"公钥加密,私钥解密"。它的主要用途是安全地传输对称会话密钥,因为非对称加密算法运算速度慢,不适合加密大量数据,而对称加密算法运算速度快,适合加密大量数据,但存在密钥分发问题。
在RSA密钥交换方式中,密钥加密的具体过程如下:
密钥加密仅用于传统的RSA密钥交换方式,这是SSL 3.0和TLS 1.0/1.1协议中最常用的密钥交换方式。然而,RSA密钥交换存在一个致命的安全缺陷:不支持前向保密(Forward Secrecy)。
前向保密是指即使服务器的私钥在未来泄露,攻击者也无法解密之前记录的加密流量。而在RSA密钥交换中,所有的会话密钥都是用服务器的公钥加密的,一旦服务器私钥泄露,攻击者就可以解密所有使用该私钥加密的过往流量。
由于这个严重的安全缺陷,TLS 1.3协议已经完全移除了RSA密钥交换方式,只支持基于椭圆曲线的Diffie-Hellman密钥交换(ECDHE/X25519)。而ECDHE密钥交换不需要使用keyEncipherment位,它使用的是keyAgreement位和digitalSignature位。
密钥加密仅支持RSA算法,因为ECDSA和Ed25519算法只能用于数字签名,不能用于加密。因此,只有RSA类型的SSL证书才能启用keyEncipherment位,ECDSA和Ed25519证书不能启用该位。
需要注意的是,即使是RSA证书,如果只用于TLS 1.2及以上版本的ECDHE密钥交换,也不需要启用keyEncipherment位。只有当服务器需要兼容TLS 1.0/1.1协议或旧版客户端(如Windows XP)时,才需要启用keyEncipherment位。
密钥加密只提供一个核心安全特性:保密性。它确保对称会话密钥在传输过程中不会被第三方窃取,但不提供身份认证和完整性保护。因此,在实际应用中,密钥加密总是与数字签名结合使用,由数字签名提供身份认证和完整性保护。
数字签名和密钥加密虽然都基于非对称加密算法,但它们在技术原理、密钥使用方向、安全目标、应用场景等方面有着本质区别,具体对比如下:
| 对比维度 | 数字签名(digitalSignature) | 密钥加密(keyEncipherment) |
|---|---|---|
| 核心逻辑 | 私钥签名,公钥验证 | 公钥加密,私钥解密 |
| 运算方向 | 非对称加密的反向应用 | 非对称加密的正向应用 |
| 私钥作用 | 生成签名 | 解密数据 |
| 公钥作用 | 验证签名 | 加密数据 |
| 数学基础 | RSA、椭圆曲线离散对数问题 | 仅 RSA 大整数分解问题 |
| 对比维度 | 数字签名(digitalSignature) | 密钥加密(keyEncipherment) |
|---|---|---|
| 核心安全目标 | 身份认证、完整性、不可否认性 | 保密性 |
| 提供的安全特性 | 身份认证、完整性、不可否认性 | 仅保密性 |
| 前向保密支持 | 支持(配合 ECDHE 密钥交换) | 不支持 |
| 私钥泄露影响 | 攻击者可以伪造身份、篡改数据 | 攻击者可以解密过往流量 |
| 对比维度 | 数字签名(digitalSignature) | 密钥加密(keyEncipherment) |
|---|---|---|
| TLS 1.0/1.1 | 必须(身份验证) | 可选(RSA 密钥交换) |
| TLS 1.2 | 必须 | 可选(兼容旧客户端) |
| TLS 1.3 | 必须(唯一身份验证方式) | 完全不支持 |
| 密钥交换方式 | ECDHE、X25519、RSA(身份验证) | 仅 RSA 密钥交换 |
| 其他应用场景 | 代码签名、文档签名、电子邮件签名、CA 证书签名 | 无其他主流应用场景 |
| 对比维度 | 数字签名(digitalSignature) | 密钥加密(keyEncipherment) |
|---|---|---|
| 支持的算法 | RSA、ECDSA、Ed25519 | 仅 RSA |
| 证书类型 | 所有 SSL 证书、代码签名证书、文档签名证书、CA 证书 | 仅 RSA 类型的 SSL 证书 |
| 是否必须启用 | 是(所有 SSL 证书) | 否(仅兼容旧客户端时需要) |
| 现代部署推荐 | 强制启用 | 建议禁用 |
很多人容易混淆密钥用法(Key Usage) 和扩展密钥用法(Extended Key Usage),它们是两个不同的扩展字段,作用不同但相互补充:
扩展密钥用法是可选扩展字段,但在现代浏览器中,SSL证书必须启用serverAuth扩展密钥用法才能被信任。常见的扩展密钥用法包括:
需要注意的是,扩展密钥用法不能替代密钥用法。例如,一张证书启用了serverAuth扩展密钥用法,但没有启用digitalSignature密钥用法,那么它仍然不能用于TLS服务器身份验证,因为服务器身份验证需要数字签名操作。
误区一:一张证书可以同时用于所有用途
很多人认为只要有一张SSL证书,就可以同时用于网站加密、代码签名和文档签名。实际上,不同用途的证书需要不同的密钥用法和扩展密钥用法,CA在签发证书时会严格限制证书的用途。混用证书不仅会导致功能异常,还会带来严重的安全风险。
误区二:数字签名和密钥加密可以互换
数字签名和密钥加密是完全不同的密码学操作,不能互换使用。例如,不能用私钥加密数据来代替数字签名,也不能用公钥验证签名来代替解密数据。互换使用会导致安全机制失效,容易被攻击者利用。
误区三:启用更多的密钥用法更安全
很多人认为启用所有的密钥用法可以让证书更"通用",但实际上这违反了最小权限原则,会极大地放大安全风险。如果一张证书同时启用了数字签名、密钥加密、证书签名等所有权限,那么一旦私钥泄露,攻击者就可以执行所有密码学操作,造成毁灭性的后果。
误区四:TLS 1.3仍然需要密钥加密
TLS 1.3协议已经完全移除了RSA密钥交换方式,只支持ECDHE和X25519密钥交换,这两种方式都不需要使用keyEncipherment位。因此,在只支持TLS 1.3的现代服务器上,完全可以禁用keyEncipherment位,提高安全性。
(1)遵循最小权限原则
只启用证书实际需要的密钥用法和扩展密钥用法,禁用所有不必要的权限。对于现代SSL证书,只需要启用digitalSignature位和serverAuth扩展密钥用法即可。
(2)证书分离部署
不同用途的证书应该分开部署,不要混用。例如,网站加密证书、代码签名证书、CA证书应该使用不同的公私钥对,分别签发和管理。
(3)优先使用ECDSA/Ed25519证书
ECDSA和Ed25519证书性能更好、安全性更高,并且不支持keyEncipherment位,天然避免了RSA密钥交换的安全缺陷。现代浏览器和操作系统都已经广泛支持这两种算法。
(4)禁用RSA密钥交换
如果不需要兼容Windows XP等非常旧的客户端,应该在服务器上禁用RSA密钥交换方式,只启用ECDHE和X25519密钥交换方式。这样可以获得前向保密保护,即使服务器私钥泄露,过往的加密流量也不会被解密。
(5)定期轮换证书和私钥
即使证书没有过期,也应该定期轮换证书和私钥,建议轮换周期不超过90天。这样可以减少私钥泄露的影响范围,提高系统的整体安全性。
数字签名和密钥加密是SSL证书密钥用法中两个最核心的概念,它们的本质区别在于:数字签名是"私钥签名,公钥验证",用于身份认证和完整性保护;密钥加密是"公钥加密,私钥解密",用于传输对称会话密钥。
Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构Sectigo、Digicert、GeoTrust、GlobalSign,以及国内CA机构CFCA、沃通、vTrus、上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!