openssl list 是干什么的
openssl list 枚举当前这个 OpenSSL 构建到底支持什么:可用子命令、摘要算法、对称密码、公钥算法、KEM 算法以及已加载的 provider。它回答的是「本机的 OpenSSL 能不能跑 SM3、SM4、SM2、ChaCha20」这类具体问题。各发行版与容器镜像的编译选项差别很大,手册里写着支持的算法不一定被编译进来,对接与选型前先看这个命令的输出最可靠。
基本信息
| 命令清单 | openssl list -commands |
|---|---|
| 摘要算法 | openssl list -digest-algorithms | grep -i sm3 |
| 对称密码 | openssl list -cipher-algorithms | grep -i chacha |
| 其他类别 | -public-key-algorithms、-kem-algorithms、-mac-algorithms |
| provider | openssl list -providers 查看已加载的算法来源与状态 |
| 版本信息 | openssl version -a 给出编译选项与安装目录,跨机器对比要先比它 |
典型使用场景
- 跨平台对接核验:客户端与服务端各自支持的算法清单不一致时,先确认两边构建能力。
- 算法可用性确认:确认本机是否支持国密算法,避免写完脚本才发现命令不存在。
- 版本升级评估:升级 OpenSSL 前后对比清单,判断是否有算法被移出默认 provider。
- PQC 迁移准备:用 -kem-algorithms 核对新版本是否包含进军算法实现。
- 故障定位:命令报 unknown algorithm 时,先看清单而不是改代码。
核对关键能力
核对关键能力
openssl list -providers # 看已加载的 provider 与状态
openssl list -digest-algorithms | grep -i -E 'sm3|sha3' | head
openssl list -cipher-algorithms | grep -i -E 'sm4|chacha' | head
openssl list -public-key-algorithms | grep -i -E 'ed25519|sm2' | head
openssl version -a # 记录版本与编译选项,便于跨机器对比常用选项读法
| 选项 | 列出内容 | 用来看什么 |
|---|---|---|
| -commands | 可用子命令 | 某个算法类命令是否存在 |
| -digest-algorithms | 摘要算法与别名 | SM3、SHA3 是否编译进来 |
| -cipher-algorithms | 对称密码与模式 | SM4、ChaCha20-Poly1305 是否可用 |
| -providers | provider 列表与状态 | 算法来源,3.x 中决定能力边界 |
| -kem-algorithms | 密钥封装算法 | 后量子迁移的能力核对 |
| -mac-algorithms | 消息认证码 | GMAC、CMAC、HMAC 是否齐全 |
OpenSSL 3.x 采用 provider 机制,老的或强度不足的算法集中在 legacy provider 中且默认不加载;因此本机「看不到」MD4、RC4 这类算法,原因通常是 provider 未启用而不是版本不支持。
清单里同一算法可能有多个名字与别名(如大小写不同的写法),脚本里按规范名调用更稳;跨容器与宿主对比时,版本与编译选项必须一起记录,否则结论不可复现。