更新时间:2026-06-26 GMT+08:00
加密解析失败
故障现象
旁路TLS流量未成功解析。
可能原因
- 上传数据库服务器的SSL私钥错误。
- 私钥算法与格式错误。
- 协议与套件配置错误。
- 未捕获到连接建立时的完整双向握手流量。
解决办法
先排除常规非解密解析失败的问题,如数据库配置错误、Agent配置错误、网络不通、安全组未放通、端口未放通等问题。
确认其他配置正确后,请逐项排查以下约束:
- 请上传数据库服务器的SSL私钥,而非证书文件。
- 私钥算法与格式:必须为RSA算法、PEM格式且无密码;不支持ECC/ECDSA证书,且需确保私钥与数据库当前证书严格匹配。
可用openssl x509 -noout -modulus -in server.crt | openssl md5与openssl rsa -noout -modulus -in server.key | openssl md5比对模数哈希,应相等。
正确格式参考:
-----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----
错误格式参考:有密码加密密钥
-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-256-CBC,... ... -----END RSA PRIVATE KEY-----
其他错误类型:
-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
- 协议与套件配置:必须禁用TLS 1.3及ECDHE/DHE类套件(前向保密),仅允许配置TLS_RSA_*系列(如AES128-SHA),否则静态私钥无法推导会话密钥。
- 如PostgreSQL的postgresql.conf中ssl = on,且ssl_min_protocol_version = 'TLSv1'、ssl_max_protocol_version = 'TLSv1.2'(禁用TLS 1.3),ssl_ciphers必须仅包含静态RSA密钥交换套件,推荐如指定算法ssl_ciphers = 'AES256-SHA',或多种指定算法ssl_ciphers = 'AES256-SHA:AES128-SHA:AES128-SHA256:AES256-SHA256'(不能包含ECDHE/DHE算法)。
不推荐GCM或RC4算法:RC4属于同步流密码,一旦流量发生丢包或字节缺失后续皆不能成功解析;GCM在旁路环境下的TCP重传包、空报文等极易导致解析器的计数器出现偏差,出现偏差后续流量不能被成功解析。
参考配置文件如postgresql.conf部分配置:
# 开启 SSL ssl = on # 1. 指定加密套件 ssl_ciphers = 'AES256-SHA:AES128-SHA:AES128-SHA256:AES256-SHA256' # 2. 指定协议版本范围 ssl_min_protocol_version = 'TLSv1' ssl_max_protocol_version = 'TLSv1.2' # 3. 指定证书和私钥 (确保权限 600) ssl_cert_file = 'server.crt' ssl_key_file = 'server.key' ssl_ca_file = 'cacert.pem'
- 握手流量捕获:解密依赖握手包中的Client Key Exchange,必须捕获到连接建立时的完整双向握手流量;若连接在抓包前、上传密钥前已建立或握手包丢失,将无法解密。
父主题: 故障排查