3. OpenSSL 入门:工具到手,先摸透脾气
好,咱们正式开始动手。这一章,我会带你装好 OpenSSL,把最常用的命令跑一遍,最后亲手签出一张自签名证书。这些东西,后面改造 SDK 时天天要用。
我个人的习惯是:学一个新工具,先别急着看文档,装好之后立刻执行几个命令,让工具「说句话」给你听。
3.1 安装配置:不同平台,同一个核心
OpenSSL 几乎在所有平台上都能跑。你想想看,PKI 生态要是没有它,估计得塌半边天。
Linux(我推荐你用这个)
大部分 Linux 发行版都自带 OpenSSL。你可以用包管理器装,也可以源码编译。
我个人偏爱源码编译,因为能控制版本。但平时开发,用系统自带的就够了。
# Debian/Ubuntu
sudo apt-get install openssl libssl-dev
# CentOS/RHEL
sudo yum install openssl openssl-devel
# 验证安装
openssl version
输出大概是这样:
OpenSSL 1.1.1w 11 Sep 2023
记下这个版本号。版本差异有时候会坑人,我遇到过 1.0.x 和 1.1.x 在 TLS 扩展处理上的不同。
macOS
macOS 自带的是 LibreSSL,不是 OpenSSL。虽然命令兼容,但底层不一样。我一般用 Homebrew 装一份独立的。
brew install openssl
# 注意:brew 安装后不会覆盖系统自带,需要手动设置 PATH 或指定路径
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
Windows
我建议你用 Win32/Win64 OpenSSL 安装包,或者用 WSL。
嗯,这里要注意:Windows 下的路径分隔符和换行符经常会搞出奇怪的问题。我建议优先在 Linux 环境下练习。
| 平台 | 安装方式 | 避坑点 |
|---|---|---|
| Linux | apt / yum / 源码 | 确认 libssl-dev 也装了 |
| macOS | brew | 注意不是系统自带的 LibreSSL |
| Windows | 安装包 / WSL | 路径和换行符容易出问题 |
3.2 常用命令:先跑起来再说
我把最常见的命令分成了四类。没必要全背,但每个类别至少动手敲一次。
- 对称加密:
openssl enc -aes-256-cbc,我记得有一次调试老系统,发现对方用的是 3DES,差点没背过气去。 - 非对称密钥:
openssl genrsa、openssl rsa,说白了就是生成和查看 RSA 私钥。 - 数字摘要:
openssl dgst -sha256,比 md5sum 更灵活。 - 证书操作:
openssl req、openssl x509,这个咱们重点讲。
先看一条很实用的命令——查看证书内容:
openssl x509 -in cert.pem -text -noout
这条命令我一天能用几十次。它能告诉你证书的签发者、有效期、公钥算法、扩展,等等。你拿到别人的证书,第一时间就该用它看一遍。
3.3 生成自签名证书:五分钟搞定一个「可信」的假证书
自签名证书,说白了就是自己给自己当 CA。开发测试时用,千万别用到生产环境。
我曾经在 Demo 演示时随手拿自签名证书,结果对方浏览器直接弹出安全警告,大写的尴尬。
第一步:生成私钥
openssl genrsa -out mykey.pem 2048
2048 是密钥长度。现在 4096 也常见,但生成慢,而且大部分场景 2048 足够。
第二步:生成证书签名请求(CSR)
openssl req -new -key mykey.pem -out myreq.csr
执行后要填一堆信息,比如国家、省份、组织。我这里有个小技巧:
Common Name(CN) 一定要填你服务器的域名或 IP。不要乱填,否则浏览器会报错说「域名不匹配」。
第三步:自签名
openssl x509 -req -days 365 -in myreq.csr -signkey mykey.pem -out mycert.pem
-days 365 表示有效期一年。调试时我经常设成 3650,省得过期麻烦。
第四步:验证一下
openssl x509 -in mycert.pem -text -noout | grep -E "Subject:|Issuer:|Not Before|Not After"
你会看到 Subject 和 Issuer 的值相同——这就是「自签名」的标志。
gen-self-signed.sh。每次新项目开始,直接执行它,十秒内拿到测试证书。
3.4 知识结构图:本章核心逻辑
我把安装、命令、证书生成的脉络画成了下面这张图。你可以用它来检查自己是否漏掉了某个环节。
这张图从安装开始,到常用命令分类,再到生成自签名证书的完整步骤,以及最后的验证环节。你可以把它当作一个检查清单。
3.5 本章的小结
其实到现在为止,你已经掌握了 OpenSSL 最核心的日常操作。未来的 SDK 改造中,你会反复用到 req、x509、genrsa 这几个命令。