温馨提示×

debian openssl怎样调试

小樊
46
2026-09-14 17:10:38
栏目: 云计算

在 Debian 上“调试 OpenSSL”通常分为几类场景:命令行调试、库/程序调用调试、TLS 连接问题排查、源码/符号级调试。下面按常见需求给你一份实用指南。


一、基础环境与版本确认

openssl version -a
dpkg -l | grep openssl
dpkg -l | grep libssl

确认是系统 OpenSSL 还是自行编译的。


二、命令行调试(最常用)

1. 测试 TLS 连接

openssl s_client -connect example.com:443 -servername example.com

常用参数:

-debug
-state
-trace
-CAfile /etc/ssl/certs/ca-certificates.crt
-protocol TLSv1.2
-cipher 'ECDHE-RSA-AES256-GCM-SHA384'

示例(看握手过程):

openssl s_client -connect example.com:443 -servername example.com -state -debug

2. 查看证书

openssl x509 -in cert.pem -text -noout
openssl s_client -connect example.com:443 | openssl x509 -text -noout

3. 本地生成测试证书(调试用)

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 1 -nodes

三、使用 openssl 应用层调试环境变量

OpenSSL 支持通过环境变量输出调试信息:

export OPENSSL_TRACE=ALL
export OPENSSL_CONF=/path/to/openssl.cnf

常用:

  • OPENSSL_TRACE=TLS
  • OPENSSL_TRACE=SSL
  • OPENSSL_TRACE=ENGINE

示例:

OPENSSL_TRACE=TLS openssl s_client -connect example.com:443

四、调试自己写的 OpenSSL 程序(C/C++)

1. 打开 OpenSSL 内部错误

#include <openssl/err.h>

ERR_print_errors_fp(stderr);

2. 设置回调(看握手)

SSL_set_info_callback(ssl, info_callback);

3. 编译时加调试符号

gcc -g -O0 test.c -lssl -lcrypto

4. GDB 调试

gdb ./your_program
run
bt

五、系统级调试(strace / ltrace)

strace(系统调用)

strace -f openssl s_client -connect example.com:443

ltrace(库调用)

ltrace openssl s_client -connect example.com:443

六、调试 OpenSSL 配置文件问题

openssl version -d
cat /etc/ssl/openssl.cnf

测试配置是否生效:

openssl ciphers -v

七、调试 Debian 包与符号

安装调试符号(Debian 12+):

sudo apt install libssl3-dbgsym

或:

deb http://deb.debian.org/debian-debug stable-debug main

八、常见排错速查

问题 排查
certificate verify failed s_client -CAfile
handshake failure -state -debug
协议不支持 -protocol
禁用会话恢复测试
自己程序崩溃 ERR_print_errors_fp + gdb

如果你能告诉我:

  • 命令行问题 还是 程序调用问题
  • Debian 版本(11/12/13)
  • OpenSSL 版本
  • 具体报错信息

我可以直接给你“对症”的调试步骤。

0