pkcs12 命令的用法
pkcs12 命令负责 PKCS#12 容器的导出与解析:用 -export 把证书、私钥与中间链打包,用 -info 或 -nodes 解析查看内容,用 -legacy 与显式算法参数处理旧设备的兼容问题。它是证书在不同平台之间搬运时最常用的一条命令,同时也是口令最容易泄漏的一条命令。参数传错的表现通常是导入方报错,而不是导出时报错。
基本信息
| 导出 | -export -out a.p12 -inkey key.pem -in cert.pem -certfile chain.pem -name alias |
|---|---|
| 解析 | -in a.p12 -nodes -out all.pem,输出包含私钥与证书 |
| 只看信息 | -info -noout 显示算法、别名与时间信息 |
| 兼容参数 | -legacy 使用旧算法,-macalg sha256 指定 MAC 算法 |
| 口令传递 | 使用 env: 或 file: 形式,避免出现在命令行 |
| 密级 | 容器内含私钥,按密钥标准管理 |
典型使用场景
- 跨平台搬运:一次性把证书与私钥分发到 Windows 或 Java 环境
- 兼容老设备:用 -legacy 导出一份旧算法容器
- 导入前检查:先用 -info 确认别名与算法再决定是否导入
- 拆解使用:把容器还原为 PEM 供服务引用
- 归档:把完整材料打包保存,并单独登记口令的保管方式
导出、查看与拆解
导出、查看与拆解
openssl pkcs12 -export -out site.p12 -inkey site.key -in site.crt -certfile chain.crt -name site -passout env:P12PASS
openssl pkcs12 -in site.p12 -info -noout -passin env:P12PASS
openssl pkcs12 -in site.p12 -nodes -out site-all.pem -passin env:P12PASS参数与用途
| 参数 | 作用 | 注意 |
|---|---|---|
| -export | 打包为 PKCS#12 容器 | 需同时提供 -inkey 与 -in |
| -certfile | 追加中间证书链 | 漏传会导致导入后链不完整 |
| -name | 指定容器内别名 | 多证书时导入方按别名选择 |
| -nodes | 拆解时不加密私钥 | 输出文件必须严格限制权限 |
| -legacy | 使用旧算法 | 会降低加密强度,仅用于兼容 |
口令用 env: 或 file: 传入,避免出现在命令历史与进程列表里。
拆解出来的 all.pem 含私钥,等同于把私钥落盘:不要留在共享目录,也不要把这类文件提交进代码仓库。
容器内的算法影响可移植性:新算法更安全,但老设备可能不认识,导出前先确认目标平台的支持范围。
导出与导入应当成对留档:容器里用的别名与算法、交付对象、口令保管方式一并记录,日后出现导入问题时不必重新猜测当初是怎么打的包。