OpenSSL 在 Windows 上的应用指南
OpenSSL 是一个强大、开源的命令行工具包,提供了用于传输层安全 (TLS) 和安全套接字层 (SSL) 协议的强大工具,同时也是一个通用的加密库。尽管它通常在 Linux 和 macOS 上使用,但它也可以有效地在 Windows 上用于生成私钥、创建证书签名请求 (CSR)、安装 SSL/TLS 证书以及识别证书信息等任务。
本指南将引导您完成在 Windows 操作系统上安装和使用 OpenSSL 的过程。
1. 在 Windows 上安装 OpenSSL
Windows 默认不包含 OpenSSL,因此您需要安装预编译的二进制文件。
1.1. 先决条件
在安装 OpenSSL 之前,请确保已安装 Microsoft Visual C++ Redistributables。如果未安装,OpenSSL 安装程序会提示您下载并安装它。
1.2. 下载 OpenSSL
推荐的 Windows 预编译 OpenSSL 二进制文件的来源是 Win32/Win64 OpenSSL Installation Project。
- 访问 Shining Light Productions 网站 (slproweb.com/products/Win32OpenSSL.html)。
- 下载适用于您系统的安装程序(例如,适用于 64 位系统的 “Win64 OpenSSL Light”)。
1.3. 运行安装程序
- 双击下载的
.exe文件以启动安装。 - 以管理员身份运行安装程序。
- 接受许可协议。
- 当提示安装目录时,通常建议将其安装在 Windows 目录之外,例如
C:\OpenSSL-Win64(对于 64 位系统) 或C:\OpenSSL-Win32(对于 32 位系统)。 - 在安装过程中,可能会询问您将 OpenSSL DLL 文件复制到何处。通常选择“Windows 系统目录”或“OpenSSL 二进制文件 (/bin) 目录”是安全的。
- 完成安装向导。
1.4. 设置环境变量
为了能够从任何命令行提示符使用 OpenSSL,您需要将其 bin 目录添加到系统的 PATH 环境变量中,并设置 OPENSSL_CONF 变量。
- 通过在 Windows 搜索栏中搜索“环境变量”并选择“编辑系统环境变量”来打开“系统属性”。
- 点击“环境变量…”按钮。
- 对于
PATH变量:- 在“系统变量”下,找到并选择
Path变量,然后点击“编辑”。 - 点击“新建”,然后添加 OpenSSL
bin目录的路径(例如,C:\OpenSSL-Win64\bin)。 - 点击“确定”关闭对话框。
- 在“系统变量”下,找到并选择
- 对于
OPENSSL_CONF变量:- 在“系统变量”下,点击“新建”。
- 将“变量名”设置为
OPENSSL_CONF。 - 将“变量值”设置为
openssl.cfg文件的路径,该文件通常位于 OpenSSL 安装的bin目录中(例如,C:\OpenSSL-Win64\bin\openssl.cfg)。 - 点击“确定”关闭对话框。
1.5. 验证安装
- 打开一个新的命令提示符窗口(现有的窗口无法识别新的环境变量)。
- 输入
openssl version并按 Enter 键。 - 如果安装成功,您应该会看到 OpenSSL 的版本号和发布日期。如果您收到类似“’openssl’ 不是内部或外部命令”的错误,请仔细检查您的环境变量设置。
2. 基本用法
安装并配置完成后,您可以在命令提示符中输入 openssl 后跟所需的命令及其参数来使用 OpenSSL。
3. 常用 OpenSSL 命令
OpenSSL 广泛用于管理 SSL/TLS 证书和密钥。以下是一些常用命令:
3.1. 生成密钥和 CSR
-
生成新的私钥和证书签名请求 (CSR):
此命令会生成一个 2048 位的 RSA 私钥和一个 CSR。系统会提示您输入国家、州、组织和通用名称等信息。bash
openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key-out CSR.csr: 指定 CSR 的输出文件。-new: 生成新的证书请求。-newkey rsa:2048: 生成一个新的 2048 位 RSA 私钥。-nodes: 确保私钥不使用密码加密。-keyout privateKey.key: 指定私钥的输出文件。
-
生成自签名证书:
这将创建一个由您自己的私钥签名的证书,适用于测试或内部使用。bash
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt-x509: 输出自签名证书而不是 CSR。-sha256: 使用 SHA256 进行签名。-days 365: 将证书有效期设置为 365 天。- 其他选项与 CSR 生成命令类似。
-
为现有私钥生成 CSR:
bash
openssl req -out CSR.csr -key privateKey.key -new -
从私钥中删除密码:
如果您的私钥已加密,此命令会创建一个未加密的版本。bash
openssl rsa -in privateKey.pem -out newPrivateKey.pem
3.2. 检查证书、CSR 和私钥
-
检查证书签名请求 (CSR):
bash
openssl req -text -noout -verify -in CSR.csr -
检查私钥:
bash
openssl rsa -in privateKey.key -check -
检查证书:
bash
openssl x509 -in certificate.crt -text -noout
3.3. 转换证书格式
OpenSSL 可以在各种格式(例如 PEM, DER, PFX, P7B)之间转换证书和密钥。
-
将 PEM 转换为 DER:
bash
openssl x509 -outform der -in certificate.pem -out certificate.der -
将 PEM 和私钥转换为 PFX/P12:
这对于将证书导入 Windows 系统或 IIS 非常有用。bash
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt-certfile CACert.crt: 如果适用,包含中间 CA 证书。
总结
本指南为在 Windows 上使用 OpenSSL 提供了基础。有关更高级的用法和完整的命令列表,请参阅 OpenSSL 官方文档。