AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 67697
Accepted
Sunny
Sunny
Asked: 2009-09-23 06:01:33 +0800 CST2009-09-23 06:01:33 +0800 CST 2009-09-23 06:01:33 +0800 CST

IIS 7.0 - SSL 证书 - 续订还是新的?

  • 772

我的其中一个 SSL 证书(仅限简单域验证)即将在 windows 2003 IIS 7.0 服务器上过期。

我从另一个供应商那里得到了更好的报价,最初签发我证书的人不想谈判更低的价格。

无论如何 - 通过 IIS 中的证书向导,我可以选择“更新”或“卸载”,然后安装新证书。

那么 - 我可以使用“更新”选项创建证书请求并将其传递给新供应商,还是我需要从“新”请求开始?对于新供应商来说,之前的证书是由另一个签名者颁发的,这是否重要?

问题是,我不想因为删除旧证书并创建新 CSR 而停止服务器(至少是安全部分),并等待新证书安装。

或者,是否可以选择在不删除旧证书的情况下准备新的 CSR?

iis
  • 3 3 个回答
  • 18756 Views

3 个回答

  • Voted
  1. Joshua
    2009-09-23T06:14:59+08:002009-09-23T06:14:59+08:00

    更新证书允许您在更新证书的到期日期时保持相同的公钥和私钥。这样做的好处是,如果您必须将指纹存储在路由器或其他东西上。我相信更新请求需要相同的颁发 CA,因此手动生成新请求可能更容易。

    在不炸毁 IIS 的情况下生成新请求

    您可以手动创建证书请求并提交。获得新证书后,您就可以切换 IIS7 正在寻找的证书。如何手动创建 Web 服务器 SSL 证书。

    该过程的简单要点是您将创建一个包含所需信息的 inf 文件,运行certreq -new file.inf file.req. 获得请求文件后,您可以将其提交给要颁发证书的 CA,然后接受他们使用命令发送给您的公钥certreq -accept file-from-ca.req

    示例 request.inf

    [Version]
    Signature="$Windows NT$"
    
    [NewRequest]
    Subject = "CN=fully.qualified.domain.name, OU=Organizational Unit, O=Company, L=City, S=State, C=Country"
    KeySpec = 1
    KeyLength = 2048
    HashAlgorithm = SHA256
    Exportable = FALSE
    MachineKeySet = TRUE
    SMIME = FALSE
    PrivateKeyArchive = FALSE
    UserProtected = FALSE
    UseExistingKeySet = FALSE
    RequestType = PKCS10
    KeyUsage = 0xa0
    ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
    FriendlyName = ""
    
    [EnhancedKeyUsageExtension]
    OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
    
    [RequestAttributes]
    CertificateTemplate = WebServer
    
    [Extensions]
    2.5.29.17 = "{text}"
    _continue_ = "DNS=&"
    _continue_ = "DNS="
    

    上面的示例 inf 是我在内部为我自己的 CA 使用的示例,但可以适应大多数环境。Exportable如果您希望能够归档您的密钥,您可以设置为 TRUE。这FriendlyName是完全可选的,该Extensions部分用于使用备用 DNS 名称(主题备用名称)。

    SAN 条目的示例如下:

    [Extensions]
    2.5.29.17 = "{text}"
    _continue_ = "DNS=example.com&"
    _continue_ = "DNS=www.example.com&"
    _continue_ = "DNS=secure.example.com"
    

    这将允许您对上述三个站点使用相同的证书,而不会抱怨名称不匹配(在现代浏览器上 - 我认为 IE6 不理解它)。如果您在 SAN 中设置了完全限定的域名(主题行的 CN),这一点很重要。如果您不需要多个域名,您也可以完全删除扩展区域(此外,某些 CA 可能不支持它)。

    过程

    一旦你保存了上述信息(我知道它很多)。按着这些次序:

    1. 打开命令提示符并 cd 到保存上述 inf 的目录。
    2. 跑certreq -new above.inf request.req
    3. 将 request.req 文件提交给您的 CA。他们将处理它并批准/拒绝它。
    4. 当他们批准它时,他们应该将您的公钥以 .cer 文件的形式发回给您。
    5. 运行certreq -accept file-from-ca.cer完成设置密钥。

    祝你好运!

    编辑

    certreq 和 inf 文件的完整语法可在附录 3:Certreq.exe 语法 (Windows Server 2003 SP1)中找到。FriendlyName和仅适用于HashAlgorithmServer 2008(和 R2)。您可以通过运行命令certutil -csplist并查看输出来查看受支持的加密提供程序的列表。当前的 Windows 2003 SP2 框确实将“Microsoft RSA SChannel Cryptographic Provider”列为可用提供程序,因此请确保您的文件正确设置了引号并且该条目仅在一行上(没有换行或多行)。

    您还可以将 ProviderName 更改为 ProviderType 并使用certreq -csplist.

    在这种情况下,我得到以下输出:

    Provider Name: Microsoft RSA SChannel Cryptographic Provider
    Provider Type: 12
    

    所以我可以使用

    ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
    

    或者

    ProviderType = 12
    
    • 7
  2. Best Answer
    Robert
    2009-10-01T05:44:05+08:002009-10-01T05:44:05+08:00

    您只需要使用 IIS 6.0 创建一个临时网站。IIS 7.0 允许您一次创建多个挂起的请求。

    IIS 7.0 实际上有一个错误,它会导致更新函数生成具有非常大的密钥(比您想要的大得多)的 CSR。因此,建议您创建一个新的挂起请求,而不是选择更新选项。安装后,您只需在网站上切换 SSL 绑定,您将不会有任何停机时间。这也允许您在每次更新时生成一个新密钥,从而提高安全性。

    证书提供者 (CA) 并不关心您是使用新选项还是续订选项,无论您是使用同一个 CA 还是从新的 CA 订购,您都可以使用任一选项。

    • 7
  3. Sunny
    2009-09-23T08:59:00+08:002009-09-23T08:59:00+08:00

    好的,为了部分回答我自己的问题 - 创建/使用新证书而不删除现有证书的部分(即不停止服务器),我在 Comodo 网站上找到了一个很好的描述- 基本上我需要创建一个“临时”网站在服务器上,并使用它来创建一个新的 CSR,发送它进行签名,并接收和导入证书。

    然后在我的主要(真实)站点上,我需要替换当前证书,然后删除临时证书。

    • 1

相关问题

  • 2003 Server企业版不能运行ASP.NET应用程序?

  • 启用集成 Windows 身份验证时,ASP(经典)在哪个帐户下运行?

  • 是否有一种简单的方法可以生成有关 IIS 中“死”文件的报告?

  • IIS 7 中的 URL 重写

  • 对于 ASP.Net 应用程序,Windows 64 位相对于 32 位的主要优势是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve