ERR_SSL_KEY_USAGE_INCOMPATIBLE
是一个在Google Chrome浏览器中出现的SSL/TLS错误,表示客户端(浏览器)与服务器之间的SSL/TLS握手过程中,服务器提供的证书或密钥与客户端期望的不兼容。这可能是由于服务器配置错误、证书问题或客户端设置不当引起的。
以下是一些可能导致此错误的原因和解决方法:
1. 服务器证书问题
- 证书链不完整:确保服务器提供的证书链是完整的,包括中间证书。
- 证书过期:检查证书是否已过期。
- 证书类型不匹配:确保证书类型与服务器配置匹配(例如,DV、OV、EV证书)。
2. 服务器配置问题
- SSL/TLS版本不匹配:确保服务器支持客户端支持的SSL/TLS版本(例如,TLS 1.2或TLS 1.3)。
- 密钥使用扩展(Key Usage Extension)不兼容:检查证书的密钥使用扩展是否正确。例如,用于服务器认证的证书应具有
digitalSignature
和keyEncipherment
的密钥用途。
3. 客户端设置问题
- 浏览器缓存:清除浏览器缓存并重新加载页面。
- 浏览器扩展:禁用可能干扰SSL/TLS握手的浏览器扩展。
- 系统时间:确保客户端系统时间正确,因为SSL/TLS证书验证依赖于正确的时间。
4. 使用工具进行诊断
- SSL Labs:使用SSL Labs SSL Test来检查服务器的SSL/TLS配置。
- OpenSSL:使用OpenSSL命令行工具来测试与服务器的SSL/TLS连接,例如:shopenssl s_client -connect example.com:443
5. 服务器日志
- 检查服务器日志,看是否有任何与SSL/TLS握手相关的错误或警告信息。
示例:修复密钥使用扩展问题
假设你有一个证书,其密钥使用扩展不正确,你可以使用以下步骤修复:
- 生成新的证书请求(CSR):
shopenssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
- 确保在生成CSR时正确设置密钥使用扩展:
- 在生成CSR时,确保包含正确的密钥使用扩展。例如,在OpenSSL配置文件中设置:ini[ req ] req_extensions = v3_req [ v3_req ] keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth
- 重新生成证书:
- 更新服务器配置:
- 将新的证书和私钥上传到服务器,并更新服务器配置以使用新的证书。