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): 一个部门标签,如ITWeb。此属性在公共证书中已被弃用(CA/Browser Forum 已逐步淘汰它),因此请尽量简化或在对话框允许的情况下跳过它。
  • 城市/地区(City/locality): 贵组织注册所在的城市,请填写全称(例如 Seattle,而不是 SEA)。
  • 省/州(State/province): 完整的州或省名称(例如 Washington,而不是 WA)。
  • 国家/地区(Country/region): 两字母的 ISO 国家代码(例如 USGBDE)。

核对每一项内容后,点击下一步

步骤 5:选择加密服务提供程序和密钥长度

加密服务提供程序属性对话框中:

  • 加密服务提供程序: 选择Microsoft RSA SChannel Cryptographic Provider。这是通过 HTTPS 由 IIS 提供 RSA 证书的正确选择。(仅在您需要 Diffie-Hellman 密钥这种罕见情况时才选择Microsoft DH SChannel Cryptographic Provider,普通的 Web TLS 不会用到它。)
  • 位长度: 选择2048。这是目前所有公共 CA 都接受的最低要求。仅在您的策略要求更大密钥时才选择30724096;代价是 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 REQUESTEND NEW CERTIFICATE REQUEST这两行,复制它,然后粘贴到订单表单中的 CSR 字段中。当 CA 验证请求并签发证书后,请参照如何在 IIS 上安装 SSL 证书,并使用完成证书请求将已签发的 .cer 文件与此服务器上待处理的密钥进行配对。

IIS Manager 向导不会添加 SAN

上述向导生成的请求中唯一的主机名是通用名称。现代浏览器和客户端(Chromium、Firefox、Safari、.NET、Java、Go)根据使用者备用名称扩展来验证主机名;自 2017 年起,通用名称已不再用于信任判定。公共 CA 会针对单一名称订单自动将 CN 复制到一个 SAN 条目中作为响应,因此仅含 CN 的请求对单个主机名仍然有效。但是:

  • 如果您需要在一张证书上使用多个主机名(例如 example.comwww.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。如果您的策略有要求,可设置为 30724096
  • 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 REQUESTEND 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 REQUESTEND 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 Provider2048位。点击下一步
  • 点击为证书请求指定文件名下方的浏览按钮,选择一个文件夹,输入以 .txt 结尾的文件名,然后点击完成
  • 在记事本中打开保存的文件,复制完整的请求内容块(包括BEGIN NEW CERTIFICATE REQUESTEND 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 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.