bg-tutorials

如何在IIS中生成CSR

本指南将向您展示如何在 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 安装说明进行操作。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.