本指南将向您展示如何在 Microsoft IIS(Internet Information Services,Windows Server 上的互联网信息服务)上生成 CSR(证书签名请求)。您可以通过两种方式创建请求:通过 IIS Manager 图形界面(经典的点击式向导),或使用 PowerShell 中的 certreq.exe 和 INF 文件。两种方法都会将私钥保存在服务器的 Windows 证书存储中,并生成一个 PKCS #10 请求,供您提交给证书颁发机构(CA)。
需要提前知道的一个重要注意事项: IIS Manager 向导不会在请求中添加使用者备用名称(SAN),而现在每个公共 CA 都要求主机名出现在 SAN 中,而不仅仅是在通用名称(Common Name)中。如果您需要 SAN(几乎总是需要),请使用下文中的 certreq.exe 方法,或者使用我们的CSR 生成器在服务器外生成 CSR,然后以 .pfx 文件的形式导入已签发的证书。
以管理员身份登录到您要保护的 Windows Server(或运行 IIS 站点的工作站),然后按照与您的 IIS 版本相匹配的部分操作。以下步骤涵盖了 Windows Server 2025、2022、2019 和 2016 上的 IIS 10(以及 Windows 10 和 Windows 11 客户端上的 IIS 10),还有较旧的 IIS 8 / 8.5 / 7 / 6 向导,适用于旧版基础设施。
在 IIS 10 上生成 CSR(Windows Server 2016 至 2025)
IIS 10 是随 Windows Server 2016、2019、2022 和 2025 附带的版本,同时也是 Windows 10 和 Windows 11 客户端中的 IIS 功能。所有版本的 Manager 界面都是相同的。
步骤 1:打开 IIS Manager
- 按 Win + R,输入
inetmgr,然后按 Enter,或者 - 打开开始菜单并搜索Internet Information Services (IIS) Manager。
步骤 2:打开服务器证书
- 在左侧的连接面板中,点击服务器名称。
- 在中间窗格(主页)中,双击服务器证书。
步骤 3:开始证书请求
在右侧的操作面板中,点击创建证书请求。此时将打开可分辨名称属性对话框。
步骤 4:填写可分辨名称
输入以下主体详细信息。仅使用标准 ASCII 字符;非拉丁字母会导致请求失败:
- 通用名称(Common Name): 您要保护的完全限定域名(FQDN),例如 www.example.com。对于通配符证书,在顶级域名前加一个星号,例如 *.example.com。
- 组织(Organization): 您公司的完整法定名称,与注册信息完全一致。OV 和 EV 证书要求填写此项。对于域验证(DV)证书,此字段会被忽略,因此填写任意简短占位符即可。
- 组织单位(Organizational unit): 一个部门标签,如IT或Web。此属性在公共证书中已被弃用(CA/Browser Forum 已逐步淘汰它),因此请尽量简化或在对话框允许的情况下跳过它。
- 城市/地区(City/locality): 贵组织注册所在的城市,请填写全称(例如 Seattle,而不是 SEA)。
- 省/州(State/province): 完整的州或省名称(例如 Washington,而不是 WA)。
- 国家/地区(Country/region): 两字母的 ISO 国家代码(例如 US、GB、DE)。
核对每一项内容后,点击下一步。
步骤 5:选择加密服务提供程序和密钥长度
在加密服务提供程序属性对话框中:
- 加密服务提供程序: 选择Microsoft RSA SChannel Cryptographic Provider。这是通过 HTTPS 由 IIS 提供 RSA 证书的正确选择。(仅在您需要 Diffie-Hellman 密钥这种罕见情况时才选择Microsoft DH SChannel Cryptographic Provider,普通的 Web TLS 不会用到它。)
- 位长度: 选择2048。这是目前所有公共 CA 都接受的最低要求。仅在您的策略要求更大密钥时才选择3072或4096;代价是 TLS 握手会稍微变慢。
点击下一步。
步骤 6:保存 CSR 文件
在文件名对话框中,点击浏览按钮并选择一个您以后能找到的文件夹,然后输入一个带 .txt 扩展名的文件名,例如 certreq.txt。请不要接受默认路径 C:WindowsSystem32:该文件夹浏览起来不方便,而且根据 UAC 设置您可能没有写入权限。桌面或专用的 C:certs 文件夹更合适。
点击完成。IIS 会将 CSR 写入您选择的路径,并将匹配的私钥作为待处理请求存储在此服务器的 Windows 证书存储中。
步骤 7:复制 CSR 并提交给 CA
在记事本(或任何文本编辑器)中打开保存的文件。您将看到如下所示的内容块:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9u
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----
选择整个内容块,包括BEGIN NEW CERTIFICATE REQUEST和END NEW CERTIFICATE REQUEST这两行,复制它,然后粘贴到订单表单中的 CSR 字段中。当 CA 验证请求并签发证书后,请参照如何在 IIS 上安装 SSL 证书,并使用完成证书请求将已签发的 .cer 文件与此服务器上待处理的密钥进行配对。
IIS Manager 向导不会添加 SAN
上述向导生成的请求中唯一的主机名是通用名称。现代浏览器和客户端(Chromium、Firefox、Safari、.NET、Java、Go)仅根据使用者备用名称扩展来验证主机名;自 2017 年起,通用名称已不再用于信任判定。公共 CA 会针对单一名称订单自动将 CN 复制到一个 SAN 条目中作为响应,因此仅含 CN 的请求对单个主机名仍然有效。但是:
- 如果您需要在一张证书上使用多个主机名(例如 example.com 和 www.example.com,或多域名证书),IIS Manager 向导无法对其进行编码。
- 如果您的 CA 严格按提交内容处理请求,即使只是单一主机名,缺失 SAN 也可能导致请求被拒绝。
对于超出单一名称的任何情况,请使用下面的 certreq.exe 方法,或使用我们的CSR 生成器生成 CSR,并以 .pfx 文件的形式将已签发的证书导入到 IIS 中。
使用 certreq.exe 和 INF 文件生成 CSR(支持 SAN)
每一台 Windows Server 都自带 certreq.exe 命令行工具,它可以让您指定 SAN、密钥长度、确切的主体信息以及提供程序。整个流程分为三部分:编写一个请求 INF 文件,运行 certreq -new 生成 CSR(以及 Windows 存储中匹配的密钥),然后将 CSR 提交给您的 CA。
步骤 1:创建请求 INF 文件
以管理员身份打开记事本,并将以下文件保存为 request.inf。编辑Subject行以及 [Extensions] 下的 DNS 条目,以匹配您的域名:
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=www.example.com, O=Example Inc, L=Seattle, S=Washington, C=US"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.example.com&"
_continue_ = "dns=example.com"
关于各项数值的说明:
- Subject: 单独一行,各字段以逗号分隔。在 C= 中使用两字母的 ISO 国家代码。
- KeyLength: 最低为 2048。如果您的策略有要求,可设置为 3072 或 4096。
- Exportable = TRUE: 允许您将私钥与已签发的证书一起导出(用于备份或安装到第二台服务器)。如果希望密钥被锁定在此计算机上,请设置为 FALSE。
- MachineKeySet = TRUE: 将密钥存储在本地计算机存储中(IIS 从此处读取)。对于 IIS,请保持此项为开启状态。
- 2.5.29.17: 使用者备用名称的 OID。每个主机名添加一行 _continue_;除最后一行外,每一行末尾都必须以 & 分隔符结束。
步骤 2:生成 CSR
在包含 request.inf 的文件夹中打开一个以管理员身份运行的命令提示符或PowerShell,然后运行:
certreq -new request.inf certreq.txt
certreq 会在本地计算机存储中生成私钥,并将 PKCS #10 请求写入 certreq.txt。打开该文件,复制从 BEGIN NEW CERTIFICATE REQUEST 到 END NEW CERTIFICATE REQUEST 的完整内容块,并像使用 IIS Manager 方法一样,将其提交到您的订单表单中。
当 CA 返回已签发的证书后,使用以下命令完成签发流程:
certreq -accept certnew.cer
此操作会将已签发的证书与存储中一直等待的私钥进行配对,此后该证书就可以在 IIS 中绑定使用了。
提交前检查 CSR(可选)
在将请求发送给 CA 之前,先确认通用名称、SAN 条目和密钥大小是值得的。在服务器上,内置的 certutil 工具可以读取该请求:
certutil -dump certreq.txt
如果您安装了 OpenSSL(Windows 系统本身不自带,您可以从 Shining Light Productions 等构建版本单独安装),以下命令可以打印出相同的详细信息:
openssl req -noout -text -in certreq.txt
更喜欢在线工具?将请求内容粘贴到 SSL Dragon 的CSR 解码器中,即可查看通用名称、SAN 条目和密钥大小。请确认通用名称与客户端将使用的主机名一致,并且所有必要的名称都出现在使用者备用名称列表中。
在 IIS 8 和 8.5 上生成 CSR(Windows Server 2012 / 2012 R2)
IIS 8 / 8.5 向导与 IIS 10 完全相同。Windows Server 2012 和 2012 R2 已于 2023 年 10 月结束延长支持,因此请计划将这些工作负载迁移到当前的 Windows Server 版本;在完成迁移之前,以下步骤仍然适用。
- 按 Win + R,输入
inetmgr,然后点击确定。(或者从开始屏幕打开Internet Information Services (IIS) Manager。) - 在连接中选择服务器,然后在主页窗格中双击服务器证书。
- 在操作中,点击创建证书请求。
- 在可分辨名称属性中,按照上述 IIS 10 中所述的方式填写通用名称、组织、组织单位、城市/地区、省/州和国家/地区(仅使用标准 ASCII 字符,州和城市名称使用全称,国家代码使用两字母代码)。点击下一步。
- 在加密服务提供程序属性中,选择Microsoft RSA SChannel Cryptographic Provider,并将位长度设置为2048。点击下一步。
- 在文件名中,选择一个以后能找到的文件夹,并以 .txt 扩展名保存文件(例如 certreq.txt)。点击完成。
- 在记事本中打开保存的文件,复制从 BEGIN NEW CERTIFICATE REQUEST 到 END NEW CERTIFICATE REQUEST 的整个内容块,并将其粘贴到订单表单中。
相同的 SAN 限制同样适用于 IIS 8 / 8.5:如果您需要多个主机名,请使用上文中的 certreq.exe 方法。
在 IIS 7 上生成 CSR(Windows Server 2008 / 2008 R2)
Windows Server 2008 和 2008 R2 早已停止支持,因此请将 IIS 7 向导视为一种针对暂时无法替换的系统的传统操作流程。整个流程与 IIS 8 / 10 相同:
- 按 Win + R,输入
inetmgr,然后点击确定,或打开开始 > 管理工具 > Internet Information Services (IIS) Manager。 - 在连接中选择服务器名称,然后双击服务器证书。
- 在操作中,点击创建证书请求。
- 在可分辨名称属性中,按照 IIS 10 中所述的方式输入通用名称、组织、组织单位、城市/地区、省/州和国家/地区。点击下一步。
- 在加密服务提供程序属性中,选择Microsoft RSA SChannel Cryptographic Provider和2048位。点击下一步。
- 点击为证书请求指定文件名下方的浏览按钮,选择一个文件夹,输入以 .txt 结尾的文件名,然后点击完成。
- 在记事本中打开保存的文件,复制完整的请求内容块(包括BEGIN NEW CERTIFICATE REQUEST和END NEW CERTIFICATE REQUEST这两行),并将其粘贴到订单表单中。
在 IIS 5 和 6 上生成 CSR(已弃用)
IIS 5 和 6(Windows 2000 Server 和 Windows Server 2003)早已停止支持,不应用于运行公共站点。仅在您维护暂时无法替换的旧版基础设施时使用本节内容:
- 打开开始 > 控制面板 > 管理工具 > Internet Information Services。
- 右键点击默认网站(或您的站点)并选择属性。
- 打开目录安全性选项卡并点击服务器证书。
- 在IIS 证书向导中,选择创建一个新证书并点击下一步。
- 选择现在准备请求,但稍后发送并点击下一步。
- 为证书输入一个描述性名称,将位长度设置为2048,其他复选框保持不勾选,然后点击下一步。
- 输入合法的组织名称和组织单位(使用简短标签,如IT)。点击下一步。
- 在通用名称中,输入您站点的 FQDN,例如 www.example.com。点击下一步。
- 填写国家/地区、省/州和城市/地区,然后点击下一步。
- 选择一个文件夹和文件名(保存为 .txt),点击下一步,查看摘要,再次点击下一步以写入 CSR。
- 在记事本中打开该文件,复制整个请求内容块,并将其粘贴到订单表单中。
在 CA 验证您的 CSR 并签发证书之后,请继续参照IIS SSL 安装说明进行操作。

