2、OpenSSL入门:安装、配置与自签名证书
好,咱们正式开始动手了。这一章我带你搞定 OpenSSL——这个加密世界里最常用的工具箱。说白了,后面所有加密通道的搭建,都离不开它。
我记得刚入行那会儿,第一次配 OpenSSL 就被各种参数搞晕了。什么 PEM、DER、CSR、CRT……一堆缩写看得头疼。但后来我发现,只要把核心流程走一遍,这东西其实没那么玄乎。
2.1 安装 OpenSSL
不同系统安装方式不一样,我列个表,你对着自己的环境来就行。
| 操作系统 | 安装命令 | 备注 |
|---|---|---|
| Ubuntu/Debian | sudo apt install openssl |
一般系统自带,检查版本即可 |
| CentOS/RHEL | sudo yum install openssl |
或者用 dnf |
| macOS | brew install openssl |
Homebrew 装完记得看路径提示 |
| Windows | 下载安装包或 WSL | 我个人建议用 WSL,省心 |
装完之后,先跑一句验证一下:
openssl version
如果看到类似 OpenSSL 3.0.2 的输出,说明装好了。嗯,这里要注意:版本 1.1.1 和 3.x 在命令上基本兼容,但 3.x 对旧算法支持更严格,后面我会提到。
2.2 配置文件在哪?
OpenSSL 的行为很大程度上靠配置文件控制。默认路径一般是 /etc/ssl/openssl.cnf(Linux)或 /usr/local/etc/openssl@3/openssl.cnf(macOS)。
你可以先看一眼:
cat /etc/ssl/openssl.cnf | head -30
里面定义了 CA 目录、证书策略、扩展属性等等。说实话,大部分场景下你不需要改它,但知道它在哪很重要——我曾经有一次折腾了半天证书签不下来,最后发现是配置文件里 dir 路径写错了。
-config 参数指定就行。
2.3 生成自签名证书
这是本章的核心操作。自签名证书,说白了就是自己给自己当 CA,签发的证书没有第三方信任,但用于内部测试或开发环境完全够用。
流程分两步:先生成私钥,再生成证书。我习惯一步到位:
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes
解释一下每个参数:
req:证书请求和生成工具-x509:直接输出自签名证书,而不是生成 CSR-newkey rsa:2048:同时生成新私钥,RSA 2048 位-keyout server.key:私钥输出文件-out server.crt:证书输出文件-days 365:有效期一年-nodes:私钥不加密(开发环境方便,生产环境别这么干)
执行后,系统会问你一堆信息:国家、省份、公司名、通用名等等。其中 Common Name 最重要——必须填你的域名或 IP,否则浏览器会报域名不匹配。
localhost,结果客户端用 IP 访问时死活连不上。后来改成 IP 地址才解决。记住:Common Name 必须和客户端实际访问的地址一致。
2.4 查看证书信息
证书生成完了,怎么确认里面内容对不对?用这个命令:
openssl x509 -in server.crt -text -noout
输出会很长,我挑几个关键字段说说:
- Subject:证书持有者信息,就是你刚才填的那些
- Issuer:签发者,自签名证书里 Subject 和 Issuer 一样
- Not Before / Not After:有效期起止时间
- Public Key Algorithm:公钥算法,比如 rsaEncryption
- Signature Algorithm:签名算法,比如 sha256WithRSAEncryption
你还可以单独提取公钥或指纹:
# 查看公钥
openssl x509 -in server.crt -pubkey -noout
# 查看 SHA256 指纹
openssl x509 -in server.crt -fingerprint -sha256 -noout
指纹这东西,在验证证书是否被篡改时特别有用。我一般在部署后,会对比本地和服务器上的指纹是否一致。
2.5 核心流程一览
下面这张图把 OpenSSL 生成自签名证书的完整流程串起来了,你一看就明白。
2.6 常见问题与避坑
chmod 600 server.key。我见过有人把私钥传到 GitHub 上,那场面……嗯,不说了。
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx
还有一个常见问题:浏览器访问自签名证书时会提示不安全。这是正常的,因为浏览器不信任你的自签名 CA。你可以选择「继续访问」,或者把证书导入到系统信任列表里。具体操作各系统不一样,这里不展开。
好了,这一章的内容就到这。你只要把安装、生成证书、查看信息这三步走一遍,后面搭建加密通道时就会顺手很多。