第4章 OpenSSL工具入门:安装、常用命令、生成密钥对、查看证书信息

说实话,很多搞证书管理的人一开始都绕不开 OpenSSL。它就像一把瑞士军刀——功能多,但入门有点门槛。我在做安全审计那几年,几乎天天跟它打交道。这一章咱们就把最基础的东西捋清楚:怎么装、怎么用、怎么生成密钥对、怎么查看证书。

4.1 安装OpenSSL

不同系统安装方式不一样,我列几个常见的。你先看看自己环境,挑一个就行。

操作系统 安装方式 验证命令
Linux (Debian/Ubuntu) sudo apt install openssl openssl version
Linux (RHEL/CentOS) sudo yum install openssl openssl version
macOS 系统自带,或 brew install openssl openssl version
Windows 下载安装包(如 Win64 OpenSSL) openssl version(需配置环境变量)

小提示:装完之后第一件事就是跑 openssl version。我看到版本号出来,心里才踏实。有一次在 CentOS 上装了半天发现没装全,结果连个证书都解析不了。

4.2 常用命令概览

OpenSSL 命令多,但常用的也就那么几个。我按功能分了类,你记着就行。

  • 版本与信息:openssl version、openssl list -cipher-commands
  • 密钥生成:openssl genpkey、openssl genrsa、openssl ecparam -genkey
  • 证书操作:openssl req(生成 CSR)、openssl x509(查看/签发)
  • 查看信息:openssl x509 -in cert.pem -text -noout
  • 格式转换:openssl pkcs12 -export、openssl rsa、openssl pkcs8

你想想看,这些命令就像工具箱里的螺丝刀、扳手。别试图一晚上记完,用的时候查文档就行。

4.3 生成密钥对

密钥对是证书的根基。我现在生成密钥对,习惯用 genpkey 命令,因为它统一支持 RSA、ECC 等多种算法。

4.3.1 生成 RSA 私钥

# 生成 2048 位 RSA 私钥
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.key

4.3.2 生成 ECC 私钥

# 生成 prime256v1 椭圆曲线私钥
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out ec_private.key

注意:私钥文件默认没有加密。谁拿到这个文件,谁就能冒充你。我建议加上密码保护:加个 -aes256 参数。

4.3.3 从私钥提取公钥

openssl pkey -in private.key -pubout -out public.pem

说到这里,我想起一个坑。有一次我帮客户做证书审计,发现他们用 openssl genrsa 生成的私钥用 PEM 格式,但另一个工具只认 DER 格式。结果折腾了一下午。所以生成之前,先想好下游系统要什么格式。

关键对照表:私钥文件格式

格式特点常见后缀
PEM (Base64)文本可读,有头尾标识.pem, .key
DER (二进制)纯二进制,体积小.der, .cer
PKCS#8标准私钥格式,支持多种算法.p8, .key

4.4 查看证书信息

证书审计的核心之一就是“看证书”。我个人最喜欢用这条命令:

openssl x509 -in cert.pem -text -noout

这条命令会把证书的几乎所有信息都打印出来:颁发者、使用者、有效期、公钥、签名算法、扩展项……

如果你只想看某个字段,比如有效期:

openssl x509 -in cert.pem -dates -noout

只看主题:

openssl x509 -in cert.pem -subject -noout

查看证书指纹(SHA256):

openssl x509 -in cert.pem -fingerprint -sha256 -noout

实战技巧:我在做审计时,经常需要批量检查几十个证书过期时间。写个脚本循环跑 openssl x509 -in *.pem -enddate -noout | cut -d= -f2,比手动点开浏览器快多了。

还有一种情况是看证书链是否完整。用这条命令就能看到证书链上每一级的信息:

openssl crl2pkcs7 -nocrl -certfile chain.pem | openssl pkcs7 -print_certs -text -noout

嗯,这里要注意:如果是二进制 DER 格式的证书,得先转换一下:

openssl x509 -inform DER -in cert.der -text -noout

我曾经遇到过一个线上事故——服务器证书明明没到期,但客户端报错。排查半天,发现是中间证书过期了,但大家只看服务器证书。所以你查看证书信息时,一定要把整条链都检查一遍。

OpenSSL 工具核心功能流程 安装 OpenSSL 生成密钥对 查看证书信息 Linux: apt/yum macOS: 自带或 brew Windows: 下载安装包 genpkey -algorithm RSA … genpkey -algorithm EC … pkey -pubout 提取公钥 x509 -text -noout x509 -dates / -subject x509 -fingerprint 核心思路:安装 → 生成密钥对 → 查看证书,每一步都有对应命令

上面这张图把本章的核心脉络串起来了。你顺着箭头走,就是一套完整的 OpenSSL 入门操作链。装好工具,生成密钥对,再学会查看证书,后面的审计工作才能展开。