PAYATHON 2026

如何在 Wamp Server 上生成 PEM encoded CSR 文件?

支付阿杰

结论

生成 PEM 编码的 CSR 不需要安装 IIS,也与 WordPress 无关。Wamp Server 的 Apache 通常自带 OpenSSL,可以直接通过 openssl.exe 生成私钥和 CSR 文件。

需要提交的是 masterpass.csr 这类 CSR 文件。masterpass.key 是私钥,必须妥善保管,不能上传或发送给第三方。

使用 Wamp Server 自带的 OpenSSL

先在 Wamp Server 的 Apache 安装目录中找到 openssl.exe,常见位置如下:

C:\wamp64\bin\apache\apache2.4.x\bin\openssl.exe

请将 apache2.4.x 替换为实际安装的 Apache 版本目录。

打开“命令提示符”或 PowerShell,进入该目录:

cd /d C:\wamp64\bin\apache\apache2.4.x\bin

运行以下命令,确认 OpenSSL 可以正常使用:

openssl version

如果系统提示找不到 openssl,可以改用完整路径:

"C:\wamp64\bin\apache\apache2.4.x\bin\openssl.exe" version

生成私钥和 CSR

执行以下命令:

openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout masterpass.key -out masterpass.csr

命令执行后会生成两个文件:

masterpass.key
masterpass.csr

参数含义如下:

  • -new:创建新的 CSR。
  • -newkey rsa:2048:同时创建一把 2048 位 RSA 私钥。
  • -sha256:使用 SHA-256 签名 CSR。
  • -nodes:生成不受密码保护的私钥,方便应用程序自动读取。
  • -keyout:指定私钥文件。
  • -out:指定 CSR 文件。

随后,OpenSSL 会要求输入证书主题信息,例如:

Country Name (2 letter code) [AU]: CN
State or Province Name (full name) [Some-State]: Shanghai
Locality Name (eg, city) []: Shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Example Company
Organizational Unit Name (eg, section) []: IT
Common Name (e.g. server FQDN or YOUR name) []: www.example.com
Email Address []: admin@example.com

填写时请注意:

  • Country Name 使用两个字母的国家或地区代码,例如 CN。
  • Organization Name 填写真实的公司或组织名称。
  • Common Name 通常填写网站的完整域名,例如 www.example.com。
  • challenge password 一般留空,除非支付平台明确要求填写。
  • 各字段的具体填写规则以 Masterpass 接入页面或当前支付服务商的证书要求为准。

如果对方指定了 RSA 位数、证书主题字段或签名算法,请优先按照对方的要求操作。

确认 CSR 是 PEM 格式

上述命令默认生成 PEM 编码的 CSR。使用文本编辑器打开 masterpass.csr,应能看到以下结构:

-----BEGIN CERTIFICATE REQUEST-----
MIIC...
-----END CERTIFICATE REQUEST-----

如果文件包含这两行标记,说明它是 PEM 编码的 Certificate Signing Request。

也可以使用 OpenSSL 检查 CSR:

openssl req -in masterpass.csr -noout -text -verify

CSR 有效时,命令会显示主题、公钥和签名算法等信息。

OpenSSL 找不到配置文件时的处理方法

部分 Wamp Server 环境在执行命令时可能出现以下错误:

Unable to load config info from ...

遇到这种情况,需要找到 Apache 目录中的 openssl.cnf,并通过 -config 明确指定其路径:

openssl req -new -newkey rsa:2048 -sha256 -nodes ^
  -config "C:\wamp64\bin\apache\apache2.4.x\conf\openssl.cnf" ^
  -keyout masterpass.key ^
  -out masterpass.csr

openssl.cnf 的实际位置可能随 Wamp Server 和 Apache 版本而变化,可以在对应的 Apache 安装目录中查找。

另一种方法是临时设置配置文件环境变量:

set OPENSSL_CONF=C:\wamp64\bin\apache\apache2.4.x\conf\openssl.cnf

设置完成后,重新执行 CSR 生成命令。

已有私钥时只生成 CSR

如果已有一把需要继续使用的私钥,不要重新生成私钥。直接执行:

openssl req -new -sha256 -key masterpass.key -out masterpass.csr

证书签发后,服务端通常还要使用同一把私钥。如果重新生成私钥,新证书将无法与原私钥匹配。

可以比较公钥摘要,检查 CSR 与私钥是否匹配:

openssl pkey -in masterpass.key -pubout -outform DER | openssl sha256
openssl req -in masterpass.csr -pubkey -noout | openssl pkey -pubin -outform DER | openssl sha256

两条命令输出的 SHA-256 摘要应完全一致。

安全注意事项

masterpass.csr 可以提交给证书签发方或支付平台,masterpass.key 则绝不能提交。私钥一旦泄露,应立即废弃,并重新生成私钥、CSR 和证书。

示例命令使用了 -nodes,因此生成的私钥没有密码保护。请将私钥保存在访问受限的目录中,并确保无法通过 URL 从 Web 服务器下载。不要把它放入 WordPress 媒体目录、公开仓库或可公开访问的站点根目录。

如果支付平台允许应用在启动时输入私钥密码,也可以去掉 -nodes,生成加密私钥:

openssl req -new -newkey rsa:2048 -sha256 -keyout masterpass.key -out masterpass.csr

能否使用带密码的私钥,取决于 Masterpass SDK、支付插件或相关服务加载私钥的方式。使用前需要确认其配置要求。

备注:内容仅供参考。