admin管理员组

文章数量:1572326

在Windows上使用Let加密IIS

 https://weblog.west-wind/posts/2016/Feb/22/Using-Lets-Encrypt-with-IIS-on-Windows

 

2016年2月22日•来自毛伊岛,HI•     76评论  

Let's Encrypt是一个新的开源证书颁发机构,承诺以标准化,API可访问和非商业的方式提供免费的SSL证书。如果您以前安装了SSL证书,那么您可能熟悉使用某些付费提供商注册证书的过程,然后完成交换证书请求和已完成请求的手动过程。

我们的加密基于一组开放服务API,可以在任何平台上实现,并为包括IIS在内的Web服务器创建证书。这似乎是一个神话般的想法,因为如果您有任何经过身份验证的访问权限,那么保护您的网站是绝对必要的。现在基本的SSL证书甚至来自付费服务提供商都是相对便宜的,因此这不是一个问题,因为这是一个问题(我使用DnSimple)无论是域管理还是SSL证书,都可以完全自动化SSL创建和管理过程,这是一个巨大的胜利。这实际上有好处和缺点,我将在文章的最后讨论这个问题。要清楚 - 我不是网络管理员,我没有在大量网站上管理证书的丰富经验所以在这篇文章中我将介绍我在自己托管的自己网站上处理的一些基本方案服务器。

Windows和IIS - 不是一流的公民

我很感兴趣地关注了Let的加密开发,但最初没有太多尝试,因为没有直接可用于Windows的实现。上周,我遇到了Nik Molnar的帖子,该帖子指出了使用PowerShell,命令行甚至是基于Windows UI工具的Windows的一些可用工具。然后Nik继续描述一个Azure插件实现,它可以自动注册和续订Let的加密证书。

但是我对IIS片段而不是Azure更感兴趣,因为我不使用Azure并在IIS上使用主机,因此在周末我使用这些工具进行旋转,以了解让Let的加密与我的IIS站点一起工作的真正原因。这篇文章是我发现的内容的摘要。

 

什么在Windows上可用

与开放式工具的情况一样,在开放式网络和安全工具方面,Windows始终是事后的想法,而不是常态。因此,当Let's Encrypt最初进入测试阶段时,没有Windows支持。但是,现在它已经测试了一段时间,有一些工具可用于为自动化证书管理环境(ACME)API提供包装器。

有很多选择:

  • LetsEncrypt-Win-Simple
    目前,这似乎是最快速,轻松地将新证书安装到IIS中的最简单的解决方案。此Windows命令行实用程序包含一个“交互式”模式,可让您在服务器上选择主机带领的Web站点,然后创建证书并在一个无缝操作中将其安装到IIS中。这适用于手动安装或简单的脚本安装。它是快速简便的,也是迄今为止我尝试过的最简单的解决方案。

  • ACMESharp Powershell命令
    ACMESharp是一个Powershell库,可以访问ACME API的许多(但不是全部)命令。与使用ACMESharp库的Win-Simple方法不同,需要一些脚本编写,您必须使用某些逻辑编写自己,但是您可以对该过程以及创建和保存中间证书的能力进行大量控制。

  • Certify
    这是ACME API的GUI实现,承诺提供交互式ACME证书管理。目前这个工具非常粗糙,但改进即将到来,每个新版本似乎都有显着提升。这是一种可视化查看证书的好方法,对于那些不想使用大量命令行foo的人来说显然更容易。

需要说明的是,所有这些工具都处于非常早期的发布阶段,所以它们有点粗糙,缺少功能......这是可以预料的。这个东西是新的。让加密本身处于测试阶段,这些工具构建在该基础堆栈的顶部。但是,我仍然可以使用所有这些工具来注册证书,这样您就可以在自己的IIS网站上使用Let's Encrypt开始了。

目前所有工具中缺少的是管理。您无法撤消或删除证书,也无法清除远程服务器上的证书。在测试时,我最终达到了在我的一个站点上注册的证书限制,然后无法进一步使用该站点,因为我无法删除/撤销任何证书。Natch。

因此,我建议您计划使用这些工具,创建一个新的主机加盖的测试站点或具有有效的互联网可访问域名的站点,并在更新并将证书添加到您关注的任何实际站点之前使用该站点。一旦弄清楚工作原理如何,就可以轻松地在现场网站上安装证书。

简单方法:LetsEncrypt-Win-Simple

到目前为止,创建和安装新证书的最简单方法是LetsEncrypt-Win-Simple。此工具从命令行运行,并有一些非常容易理解的选项。基本上,您使用服务器上的主机标题从活动网站列表中选择一个站点,该实用程序将为您创建证书,创建一个https绑定并附加证书。如果已经有证书,则证书将替换为新证书。

该工具基本上包含了创建注册,域和证书的所有中间步骤。稍后再次运行时,它会使用现有存储来检索现有注册和域信息以运行续订。您不需要了解ACME API的工作原理或涉及的部分,这很好。实际上我希望我能像我一样深入研究下层工具之前先看看这个工具。

安装很简单:您可以从他们的GitHub版本页面安装最新版本,只需将zip文件解压缩到一个文件夹即可。该zip文件包含一个.NET可执行控制台应用程序和所需的SSH本机依赖项以及一些配置文件。

要运行它,只需打开命令窗口,CD到安装文件夹并运行:

LetsEncrypt

这是交互的样子(在我的家用机器上,我只添加了一个用于测试的主机端口网站):

(请注意,您在此处使用的网站必须可以访问Internet,并且您必须从将接收证书的计算机上运行这些工具)

如果一切顺利,您最终将在您指定的网站上的IIS中安装新证书。

如果安装了现有证书,则将替换为新证书。该实用程序足够智能,可以检测现有的Let's Encrypt证书并删除旧证书并将其替换为新证书,只留下新证书。任何其他证书只是留在原地,但不是未绑定的。

 SNI - 每个IP地址多个SSL证书

请注意,默认情况下,IIS仅允许将单个SSL证书绑定到IP地址。从Server 2012 IIS支持服务器名称指示(SNI)开始,它允许您将多个SSL证书绑定到单个IP地址。为了使其工作,您需要确保使用相同IP地址的每个站点都检查了SNI标志,如上所示。SNI将证书绑定到主机头而不是IP地址。请注意,对于Windows XP上的旧版本IE,SNI支持无法正确导航SSL签名存在问题。如果这是一个问题,您将需要坚持IP绑定SSL证书。

如果您在Web浏览器中打开该站点,则可以通过单击安全图标并检查证书信息来快速检查证书是否正常工作。如您所见,证书是由Let's Encrypt创建的证书。

有什么好处是你可以简单地重新运行LetsEncrypt,它会出去创建一个新证书并删除旧证书,所以在你需要更新/撤销它时,可以根据需要快速轻松地更新证书。

好极了!这个过程非常简单明了。LetsEncrypt-Win-Simple还有一些命令行选项,允许您自动化域以创建证书和禁用提示,以便您也可以自动执行此过程。顾名思义LetsEncrypt-Win-Simple很简单,不需要了解Let's Encrypt如何在幕后工作的血腥细节,除非你有超出注册的特定需求,这是去恕我直言的方法。

更新

LetsEncrypt-Win-Simple还包括一个可以轻松续订所有证书的界面。你可以运行:

LetsEncrypt --renew

并且它会检查它管理的所有站点的到期日期,如果过期(或在过期当天),它会自动续订并用新的证书替换旧证书。太好了!

该实用程序还会创建一个计划任务,每天运行一次此命令并触发更新请求。请注意,您可能必须按照此处所述调整任务用户身份设置,以确保用户在运行计划任务时正确登录。请注意,该用户是登录用户,因为此工具在%appdata%\ letsencrypt-win-simple中创建Let's Encrypt保险库,这是一个特定于用户的配置文件。如果保险库位于像\ ProgramData这样的全球位置,那么它会更好,所以它可以在包括系统帐户在内的任何帐户下运行。但这是一个小问题。

 

使用ACMESharp和PowerShell进行更多控制

如果您希望直接使用较低级别的ACME API,并且您希望对证书创建过程进行细粒度控制,那么ACMESharp的Powershell命令行开关是一种很好的方法。它都基于.NET库,它为ACME API提供核心接口,因此您还可以自动化自己的应用程序。

LetsEncrypt使用一些核心概念:

  • 注册本质上是创建证书的实体(您或您的公司)
  • 标识符,即您要注册的域名
  • 与该域名绑定的证书

该过程涉及创建一次注册帐户,然后创建可注册的多个域。然后,每个域可以随时间具有与其关联的多个证书。

ACMESharp GitHub网站有一个关于如何开始的非常好的主题,我可以通过设置注册,设置域然后创建实际证书的过程。

预先警告 - 如果你正在进行更新,有很多步骤和步骤会改变 - 它并不像LetsEncrypt-win-simple那么简单,尽管你可以使用ACMESharp构建类似的东西(因为它使用了LetsEncrypt-win-simple) ACMESharp API)。ACMESharp是一个较低级别的工具,它提供了可以在其上构建的API表面。

但您可以相对轻松地使用Powershell界面来创建新证书和续订证书。通过这些步骤的过程会根据您是否在第一次安装时进行更改,您必须先创建初始注册和域,或者只需要在现有域注册中添加新证书。

经过相当多的临时域实验后,我最终得到了一个参数化的Powershell脚本,我现在用它来注册和更新域。除了说明之外,您可能会发现这很有用(对于一件事,如果您想手动执行这些步骤,则更容易剪切和粘贴)。

#install-Module -Name ACMESharp

import-module ACMESharp

$email = "mailto:rick@east-wind"
$domain = "codepaste" $alias = "codepaste" $iissitename = "codepaste" $certname = "codepaste$(get-date -format yyyy-MM-dd--HH-mm)" $pfxfile = "c:\Admin\Certs\$certname.pfx" $initializevault = $FALSE $createregistration = $FALSE $createalias = $TRUE # Change to the Vault folder cd C:\ProgramData\ACMESharp\sysVault # First time on the machine - intiialize vault if($initializevault) { Initialize-ACMEVault } Get-ACMEVault if($createregistration) { # Set up new 'account' tied to an email address New-AcmeRegistration -Contacts "$email" -AcceptTos } if($createalias) { # Associate a new site New-AcmeIdentifier -Dns $domain -Alias $alias # Prove the site exists and is accessible Complete-ACMEChallenge $alias -ChallengeType http-01 -Handler iis -HandlerParameters @{WebSiteRef="$iissitename"} # Validate site Submit-ACMEChallenge $alias -ChallengeType http-01 # check until valid or invalid - pending Update-ACMEIdentifier $alias -ChallengeType http-01 Update-ACMEIdentifier $alias -ChallengeType http-01 } # Generate a certificate New-ACMECertificate ${alias} -Generate -Alias $certname #Submit the certificate Submit-ACMECertificate $certname # Hit until values are filled in update-AcmeCertificate $certname pause # Export Certifiacte to PFX file Get-ACMECertificate $certname -ExportPkcs12 $pfxfile 

请注意,通过设置3个布尔值,您可以控制新证书和续订证书的流程。脚本在上面设置的方式运行以进行证书续订/更新。

此脚本生成一个PFX文件,然后可以将其导入IIS。还有一些工具可以将现有证书安装和更新到IIS中,但它看起来目前API中的一些更改使得这对我不起作用。我甚至无法获得加载工具。

您可以手动安装证书:

certutil -importPFX "c:\admin\certs\codepaste2016-02-28--20:22" –p password

或者从IIS管理控制台和“IIS证书”部分手动导入它。这适用于首次安装,但如果您需要更新现有证书,则仍需要使用管理控制台或命令行工具交换IIS中的证书。

 

Certify - 让我们在制作中加密GUI

(2016年3月10日更新)

Certify是一个基于可视GUI的工具,它也基于ACMESharp库,并为证书操作提供可视化管理界面。这个工具目前处于Alpha状态,而且非常粗糙 - 事实上,几周前我最初尝试使用它时,实际上无法获得创建证书。然而,最近有一个更新,即使UI仍然有点粗糙,现在已经有了基本功能。

Certify UI几乎反映了Vault的术语,联系人(真正的电子邮件)以及域和证书,​​UI反映了这种层次结构。您可以创建新域,然后将新证书附加到每个域。您还可以使用此UI更新,导出证书并将其直接应用于IIS Web站点绑定。

该工具允许您创建新的电子邮件联系人,然后允许您以交互方式添加域和证书。您可以颁发新证书。证书需要一分钟左右才能生成,目前您必须刷新Vault以查看更新的,经过验证的证书。验证后,您可以使用“自动应用”选择要将证书绑定到的网站和端口。您还可以将证书导出到.pfx文件,并且可以随时要求使用Certify续订证书。

这个工具显然处于Alpha阶段,虽然它还没有工作,但很高兴看到这个用户界面。拥有已安装证书的可视视图并一目了然地查看证书状态可能很有用。根据证书的到期状态看到不同的颜色会很高兴(红色表示过期,橙色表示几周,绿色表示有效)等。拥有一个能够一目了然地查看所有内容的UI非常好。

继续关注这个工具。

我们在哪?

免费和开源SSL证书的想法肯定会在正确的时间到来,因为我们正在考虑谷歌和其他大型互联网公司的大力推动,试图在每个互联网连接上强制执行SSL。运行SSL可以通过加密内容和标头来帮助防止许多HTTP,XSS和man处于中间类型攻击。尽管SSL证书已经变得更便宜,但是使用简单且“官方”的方式来创建SSL证书会增加SSL使用率。我知道我有一些小型项目网站,我无法证明每年花费20美元用于SSL,但如果它是免费的 - 嘿,为什么不是。

它不仅仅是关于免费证书 - 证书生成可以完全自动化的事实也特别适用于那些拥有大量站点和证书的人。能够每天检查一次证书到期,并在一天之内更新,以保持最新状态,这样可以减少一件事情。

我在工具的当前状态下看到Let's Encrypt的一个问题是证书有效期最长为90天或3个月。这意味着您需要比典型的1年证书更频繁地管理续订。如果证书过期,我们假设加密应该有邮件通知,但由于未来的过期太远,我还没有尝试过。更新过程的自动化将成为关键 - 没有人希望手动更新证书,甚至每3个月通知一次。我今天在我的Web服务器上有5个证书,甚至一年到期都是一个很大的麻烦,因为这些证书在一年中的不同时间到期。对我而言,自动化方面比成本更具相关性。

我们的加密本身仍处于开发阶段,Windows工具甚至还不成熟。基本API存在,今天可用于创建证书,如我在此处所示,但仍有许多工作要做。当前创建的证书是您可以获得的最基本的证书。不支持通配符证书或更高端验证的证书。目前尚不清楚这是否会得到支持,因为更多地涉及为这些类型的证书设置注册。所以今天Let's Encrypt并不是解决所有SSL需求的解决方案,但它确实很好地服务于低端领域。你绝对可以如果你愿意忍受一点点成长的痛苦,今天就用它来获得免费的SSL证书。特别是使用LetsEncrypt-win-simple,它很容易上手,甚至可以保持最新状态。

在未来,我希望我们能够看到直接内置到Web服务器中的Let's Encrypt等服务的集成。事后看来,拥有一个通用的证书注册协议是如此明显。特别是对于IIS和Windows一般来说,一直是如此痛苦的证书管理屁股。我怀疑我们会尽快看到这种整合。

您如何看待自己使用此服务?您是否仅仅因为服务是免费的,还是因为自动化机会而使用它?在评论中发出声响。

资源

  • Code Magazine文章:使用Let加密证书保护IIS网站安全
  • 转移到使用Certify进行加密
  • LetsEncrypt赢即简单
  • ACMESharp Powershell命令
  • 认证网络
  • 让我们在Azure上加密(Nik Molnar)

您可能也喜欢的其他帖子

  • 使用IIS应用程序初始化来保持ASP.NET应用程序的活动
  • ASP.NET核心和CORS陷阱
  • 使用Powershell自动执行IIS功能安装
  • ASP.NET核心中对Kestrel和IIS Express的外部网络访问
  分享: 这个内容对你有用吗? 考虑捐少一笔钱来 表达你的支持。 发表于 IIS    Security    LetsEncrypt  

 

理性之声


     
nemke 
2016年2月22日

# 回复:在Windows上使用让我们加密与IIS

是否可以在自托管应用程序中使用/安装LetsEncrypt(例如,支持https的HttpListener)?    
Rick Strahl 
2016年2月22日

# 回复:在Windows上使用让我们加密与IIS

@nemke - 我没有尝试,但我很确定你可以使用IIS证书进行自我托管。我在这篇SignalR SSL帖子中谈到过这个问题:http://weblog.west-wind/posts/2013/Sep/23/Hosting-SignalR-under-SSLhttps#FindingtheCertHash    
Mike Gale 
2016年2月22日

# 回复:在Windows上使用让我们加密与IIS

谢谢你做了研究。

做到这一点的明智方法早就应该了。希望很快就能有一个生产就绪的API和不错的证书生命周期。    
调整 
2016年2月22日

# 回复:在Windows上使用让我们加密与IIS

谢谢你的帖子,里克!

我完全和你在一起:SSL是必须的,但SSL是PITA ... 
我已经使用免费证书(来自StartSSL),但每年我都很困惑,至少还需要几个小时续订证书我在IIS服务器上托管的网站。我将在备用域名上尝试Let'sEncrypt-Win-Simple和ACMESharp Powershell命令,如果一切正常,我将自动执行*真实网站的续订过程* 

再次感谢!    
Rick Strahl 
2016年2月22日

# 回复:在Windows上使用让我们加密与IIS

@Mike - 我认为证书的3个月最长期限不会改变。我们的想法是强制更新和创建新密钥。如果自动续订可以自动化,那么经常更新证书是一种好习惯 - 减少泄密的可能性。    
Chris Marisic 
2016年2月23日

# 回复:在Windows上使用让我们加密与IIS

我相信SNI SSL的真正关注点不是Windows XP,而是Android设备。我相信大量的Android设备会宣布SNI的安全错误。 http://blog.layershift/sni-ssl-production-ready/ 个人我仍然不会将SNI用于生产。也许在另外5年中,在涉及“全球”网络时,似乎任何东西都可以使用。    
Ian Yates 
2016年2月23日

# 回复:在Windows上使用让我们加密与IIS

更新期限短,因此无需维护大型证书撤销列表。这不是一种惩罚,而是一种节省成本的措施,而且正如你所说,妥协的可能性更小(如果妥协,它将不会在CRL中长期存在)。    
Gfw 
2016年2月29日

# 回复:在Windows上使用让我们加密与IIS

谢谢你的帖子,非常及时。我使用了LetsEncrypt-Win-Simple,按照测试网站上的说明进行操作,并且完美无缺。顺便说一句......我在阅读你的artile之前也尝试了Cerify并且遇到了同样的问题 - 没有颁发/安装证书。

问题...... 

一旦发出证书就无法撤销或删除证书有什么问题?是真正关心的事情吗?    
Rick Strahl 
2016年2月29日

# 回复:在Windows上使用让我们加密与IIS

@Gfw - 我不确定这次改变和限制。我认为在正常情况下这不是问题 - 旧证书应该滚动。我认为这只是成长的痛苦,.NET / Windows组件目前不支持撤销的东西,但我相信它即将到来。我认为这笔交易是,如果你有一个证书问题,你只需创建一个新的,只要你没有太多的单个域(我认为我在测试中创建了大约10)我不认为你我会遇到这个问题,在正常的使用案例中这是不太可能的。    
Spongman 
2016年4月8日

# 回复:在Windows上使用让我们加密与IIS

如果你每天都要运行续订脚本,为什么不能持续两天的美分呢?    
Rick Strahl 
2016年4月10日

# 回复:在Windows上使用让我们加密与IIS

@Spongman - 你不会每天更新。WinSimple任务**每天检查**以查看证书是否已过期,但它不会每天更新。续订速度并不快,并且您可以为单个顶级域创建证书的频率有限。但是,更频繁地创建新证书没有任何问题,但每隔几天看起来就有点过头了。    
罗兰多 
2016年4月12日

# 回复:在Windows上使用让我们加密与IIS

你好,所以这个过程(简单的胜利)并不像看起来那么容易。我曾尝试多次尝试安装证书,这是我收到的错误。我确实进入了IIS并将静态文件移到了extensionlessurlhandler之上,所以这是正确的。唯一剩下的就是web_config文件?请帮助,如果需要更新/更正Web配置文件以及应该是什么,请告诉我。非常感谢您的宝贵时间。

这可能是因为IIS没有设置为处理无扩展的静态
文件。以下是如何解决这个问题:
1。在IIS管理器中转到Site / Server-> Handler Mappings-> View Ordered List 
2.将StaticFile映射移到ExtensionlessUrlHandler映射上方。
(像这样 http://i.stack.imgur/nkvrL.png )
3.如果您需要更改您的web.config文件,更新一个
在C:\用户\罗兰\桌面\ letsencrypt共赢-简单。 v1.9.0 \ web_config.xml    
史蒂夫 
2016年5月12日

# 回复:在Windows上使用让我们加密与IIS

此过程是否可以与不允许直接访问IIS的托管站点一起使用?    
Rick Strahl 
2016年5月30日

# 回复:在Windows上使用让我们加密与IIS

@Steve - 除非你构建自定义工具,否则我不这么认为。您需要能够从计划安装证书的服务器运行LetsEncrypt客户端,以便证明您可以控制域。

可以为此设置服务器托管机制。如果可以构建基于Web的前端来实现这一目标,那将是很好的 - 这样您就可以远程管理证书。什么都没有,但我打赌有人会建立这个。    
奥利弗 
2016年6月1日

# 回复:在Windows上使用让我们加密与IIS

瑞克,

谢谢你的另一篇伟大帖子。我非常感谢您为研究和写作投入的时间和精力。您的博客总是值得一看 - 如果它位于Google的第一个结果页面上,那么我首先会找到我正在寻找的信息。

坚持下去,我相信很多其他读者至少和我一样欣赏你的内容。

顺便说一句,这篇文章帮助我在昨天的Windows上快速在IIS中设置了TLS证书:-)    
Rick Strahl 
2016年6月01日

# 回复:在Windows上使用让我们加密与IIS

谢谢@Oliver。我很感激善意的话。很高兴看到我的ramblings对你们有些人有用:-)    

2016年7月22日

# 回复:在Windows上使用让我们加密与IIS

更新
LetsEncrypt赢即简单也包括方便地更新所有证书的接口。您可以运行:

LetsEncrypt --renew 
并检查它管理的所有站点的到期日期,如果过期(或在到期当天),它会自动续订并用新的证书替换旧证书。太好了!

该实用程序还会创建一个计划任务,每天运行一次此命令并触发更新请求。请注意,您可能必须按照此处所述调整任务用户身份设置,以确保用户在运行计划任务时正确登录。


问题是我找不到任何LetsEncrypt计划任务,我应该创建一个,我应该选择哪个应用程序?    
巴勃罗Carrau 
2016年9月12日

# 回复:在Windows上使用让我们加密与IIS

我联系了开发人员以获取有关如何处理自动续订的Certify计划。我建议添加命令行选项以允许我们设置计划任务。他回答说:

“在未来的某个时刻,我打算将自动续订作为一项服务添加到应用程序中。在此之前,您可以使用ACMESharp powershell脚本(Certify使用的脚本)来编写您喜欢的任何操作,包括续订。” 

我希望他很快就能开发出一些东西,因为到目前为止,Certify一直是生成证书的最简单方法。    
Rick Strahl 
2016年9月12日

# 回复:在Windows上使用让我们加密与IIS

@Pablo - 遗憾的是,Certify中的续订存在许多问题。续订似乎没有将适当的证书安装到Windows Cert存储中。

我实际上退出了Certify,现在我正在使用LetsEncrypt-win-simple,它似乎在更新方面做得更好。最近的更新还使得此过程更加无缝以获得证书。

我希望我有时间帮助Certify - 看起来很遗憾,项目在很大程度上被开发人员抛弃了(同时限制)。除了基于ACME库的解决方案之外,还有一种直观的方法可以做到这一点。    
丹史密斯 
2016年10月5日

# 回复:在Windows上使用让我们加密与IIS

感谢这篇博文。通过相同的练习找到了最好的方法,让我节省了几个小时。

丹尼尔史密斯
@databee    
Dave Quested 
2016年10月11日

# 回复:在Windows上使用让我们加密与IIS

嗨瑞克

谢谢你的这篇文章,非常有帮助。

您是否找到了一种方法来手动使用LetsEncrypt Win Simple并随后自动添加IIS绑定?好像你必须以某种方式使用--script param?

我们基本上希望有一个运行LetsEncrypt Win Simple手动命令的上线进程,然后确保为该站点应用IIS绑定/证书。

可能?我看到你写了一篇关于PowerShell的文章,但是看不出如何将它们联系在一起。任何帮助非常感谢!

戴夫    
迈克尔 
2016年11月9日

# 回复:在Windows上使用让我们加密与IIS

您是否知道如何使用let加密本地证书(如远程桌面)?我有自签名证书,所以它是“加密的”,但每次都会弹出那个讨厌的警告信息。此外,有没有办法使用LE与Windows Server Essentials远程Web访问工具?    
Rick Strahl 
2016年11月9日

# 回复:在Windows上使用让我们加密与IIS

让加密确实需要一个网站,因为它需要验证网站的域名。您可以通过Web站点创建证书,然后可能将生成的证书用于其他目的,假设它与兼容的证书类型相同。    
Pascal 
2016年11月14日

# 回复:在Windows上使用让我们加密与IIS

非常感谢这篇文章。我使用了LetsEncrypt-Win-Simple,并在5分钟内获得了有效证书!

我已经使用我的本地管理员用户更新了计划任务,以便在未登录时也能正常工作。工作就像一个享受。

对我而言,最后一步是将HTTP站点重定向到HTTPS并让Google了解它。

真的很酷,谢谢。

   
NetoMeter 
2016年11月27日

# 回复:在Windows上使用让我们加密与IIS

我们已成功测试并发布了Lets-encrypt-simple客户端和ACMESharp PowerShell模块的视频。

Lets-encrypt-simple客户端似乎更适合在运行IIS的Windows服务器上安装单域证书。视频说明可在此处获得:

http://wwwometer/blog/?p=1758

ACMESharp PowerShell模块非常适合自动安装和更新Exchange多域(SAN)证书 - 视频演示可在此处获得:

http://wwwometer/video/tutorials/How-to-Install-LetsEncrypt-Certificate-in-Exchange-Server

在演示中,我们正在调度任务调度程序中的任务以续订Exchange证书,并且它无间隙地工作。

问候,

院长

   
Walt 
2017年1月18日

# 回复:在Windows上使用让我们加密与IIS

你好。

非常感谢Let's Encrypt上的帖子。我现在使用LE作为公司主页。但是,我想将所有HTTP流量重定向到受HTTPS保护的网站,根据我的理解,LE使用HTTP来请求续订?这样的重定向是否会导致自动续订出现问题?

非常感谢任何建议/帮助!沃尔特

   
Rick Strahl 
2017年1月18日

# 回复:在Windows上使用让我们加密与IIS

Walt - 我使用https重定向,它似乎工作。我认为首次注册它必须是http,但对于续订https请求似乎对我有用。

   
贾斯汀布劳恩 
2017年2月1日

# 回复:在Windows上使用让我们加密与IIS

伟大的文章,里克。一直在寻找使用IIS的最佳方法。这似乎是目前最好的方法。感谢您深入了解并分享。

   
肖 
2017年2月3日

# 回复:在Windows上使用让我们加密与IIS

你好

我正在尝试进行第一次续订,但是当我使用LetsEncrypt时 - 再次告诉我,我的证书无法续订,因为它仍然有效,但是当我访问我的网站时,我的证书已过期。

还有其他人有这个问题吗?我有2个网站在我的网站上使用ssl。我检查了要求服务器名称识别。

   
AlexB 
2017年2月13日

# 回复:在Windows上使用让我们加密与IIS

谢谢,我简直不敢相信这么多年来的挣扎。

   
roy 
2017年2月19日

# 回复:在Windows上使用让我们加密与IIS

萧,你有没有解决续约问题?如果是这样,你做了什么修复它?

   
Mike Caldera 
2017年2月19日

# 回复:在Windows上使用让我们加密与IIS

感谢您的信息。我之前放弃了尝试安装这些证书并将其转换为IIS7。简单方法:LetsEncrypt-Win-Simple对我来说实际上是最快和最简单的。

谢谢你1000倍的时间。

麦克风

   
Guillaume P 
2017年3月9日

# 回复:在Windows上使用让我们加密与IIS

@Rick Strahl:Walt - 我使用https重定向,它似乎工作。我认为首次注册它必须是http,但对于续订https请求似乎对我有用。

https重定向适用于续订,但到达日期时会发生什么?该脚本通过提交新的质询请求来处理,但它可能需要像第一次运行那样执行http请求。

你怎么看待这件事 ?

   
Rick Strahl 
2017年3月10日

# 回复:在Windows上使用让我们加密与IIS

@Guilliaume - 我知道它有效,因为我有LetsEncrypt-WinSimple在几个自动重定向到https的网站上为我处理自动续订。我认为即使已经安装了证书,它也只是首次通过http注册。

   
NetoMeter 
2017年3月18日

# 回复:在Windows上使用让我们加密与IIS

里克,

我认为即使已经安装了证书,它也只是首次通过http注册。

创建LE帐户(这是客户端做的第一件事)和用于加密与LE服务器通信的私钥/公钥对后,执行您需要包含在证书中的域名的注册和LE的成功域名注册(http-01验证)有效期略长于11个月。

这就解释了为什么在证书续订期间您没有看到来自LE的http后续验证,而域名注册仍然有效 - 在12个月内,您将不得不再次执行新的注册(验证)名称。

问候,

院长

   
Niko H. 
2017年3月21日

# 回复:在Windows上使用让我们加密与IIS

嘿里克!

你在这里设置的精彩教程!

我没有找到“包括www”的开关。到证书。所以我必须为www安装2个证书。没有www。在Windows(?)中,因为Linux上的Plesk提供了通过打开一个框来执行此操作的选项。这是Windows下的限制吗?

谢谢你的帮助!

最好的祝福

尼科

   
Rick Strahl 
2017年3月21日

# 回复:在Windows上使用让我们加密与IIS

@Niko - 是的,你必须设置每个子域包含www.mydomainmydomain

   
Niko 
2017年3月21日

# 回复:在Windows上使用让我们加密与IIS

@Rick谢谢!这意味着我必须安装在这种情况下真的2!证书?

   
Rick Strahl 
2017年3月21日

# 回复:在Windows上使用让我们加密与IIS

@Niko - 是的,但是因为你可以让证书自动更新,拥有两个证书确实不是问题。

   
Adrew 
2017年4月11日

# 回复:在Windows上使用让我们加密与IIS

嗨,Rick非常感谢脚本工具。是否有可能获得像ssl.mysite这样的子域名证书? - 该实用程序无法找到具有子域绑定的IIS站点。最好的问候,安德鲁

   
Rick Strahl 
2017年4月12日

# 回复:在Windows上使用让我们加密与IIS

@Andrew - 绝对有效。确保您可以在IIS管理器中查看这些站点。当您运行LetsEncrypt-WinSimple时,它应该看到并显示这些网站。确保您以管理员身份运行,否则您将无法访问枚举网站所需的管理对象。您还需要确保为每个站点使用SNI。

   
本 
2017年4月18日

# 回复:在Windows上使用让我们加密与IIS

嗨里克

这是一个很好的写作,谢谢。

我目前正在建立一个网站,其中有两个Web服务器,它们支持Cloudflare负载均衡(仍在预览中)。

我正在尝试使用LetsEncrypt-Simple为这些服务器设置SSL。但是,服务器X的授权失败,因为负载均衡器可能将应答文件的请求路由到服务器Y,反之亦然。

所以,我的问题如下:

  1. 如何为负载均衡器后面的所有Web服务器设置SSL?
  2. 我们如何为此方案配置续订流程?

谢谢

   
Niko 
2017年4月18日

# 回复:在Windows上使用让我们加密与IIS

嗨瑞克,再一次来自我的问题。

所有首次安装的证书的持续时间为90天。到期日期前多少天计划任务会更新证书?

(我还修改了自动安装的计划任务作业,每天9点运行a)以最高权限运行b)当用户未登录时运行(设置管理员密码),因为它应该在没有记录的情况下运行在管理员。)

非常感谢和问候

尼科

   
Jan D 
2017年4月18日

# 回复:在Windows上使用让我们加密与IIS

通过letsencrypt刷新时我一直收到此错误:ACME服务器可能无法访问http://www.mydomain/.well-nenely / acme-challenge /

我按照列出的步骤,但无济于事。还有其他建议吗?

   
Rick Strahl 
2017年4月18日

# 回复:在Windows上使用让我们加密与IIS

@Ben - 您必须确保服务器亲缘关系得到保证,并且当您设置请求时,保证在Lets Encrypt回调时返回到同一台机器,因为该机器将是唯一具有请求信息的机器校验。最有可能的是,您必须将该站点从负载均衡器中取出,或者在启用单个站点的情况下运行均衡器以使其工作。否则 - 您需要使用传统路由来获取更复杂但不需要对运行站点进行实时验证的证书。

   
Jaime Hablutzel 
2017年4月20日

# 回复:在Windows上使用让我们加密与IIS

Caddy是一个Web服务器,与Let的加密本地集成,https://caddyserver/。

   
Niko 
2017年4月24日

# 回复:在Windows上使用让我们加密与IIS

我对4月18日的问题仍未得到答复。有人应该有经验,因为Letsencrypt不是新的,但对我来说是一个相对较新的主题。当预定的任务工作最早更新时,也许某人有答案吗?谢谢和问候Niko

   
Rick Strahl 
2017年4月24日

# 回复:在Windows上使用让我们加密与IIS

@Niko - 我不确定LetsEncrypt什么时候开始续约,但我相信这是60天。我所知道的是,我的续约只是自动发生(AFAIK)由于错过了续订而没有因停机而打嗝。

   
华莱士特纳 
2017年5月2日

# 回复:在Windows上使用让我们加密与IIS

嗨里克很棒的文章!让我们加密它的巨大粉丝就像我从来不知道存在但迫切需要的东西!我正在使用带有反向代理的asp核心(不是aspcore IIS模块) - 这与自动续订无关,因为您需要禁用反向代理(除非您的代理应用程序在与IIS Web相同的文件夹中运行)应用)

幸运的是,您可以在续订通过命令行运行之前执行此操作:

Import-module webadministration set-webconfigurationproperty '/system.webserver/rewrite/rules/rule[@name="ReverseProxyInboundRule1"]' -Name enabled -Value false -PSPath "IIS:\sites\<your_website_name>"

参考:https: //forums.iis/t/1200431.aspx

   
套件 
2017年5月5日

# 回复:在Windows上使用让我们加密与IIS

嘿里克,

感谢您关于LetsEncrypt-Win-Simple的文章。

我设法让它在IIS 8中工作。这将简化烦人的任务。

然而,当被问到我是否想每60天自动续订时,我选择了“否”,因为我认为下次我可以选择“Y”,但它不会再给我这个选项。我看到任务计划程序中有一个新的letsencrypt日常任务,但我不认为这是60天的自动续订。

我没有看到在运行letsencrypt.exe时如何重新设置自动续订Y / N选项或如何手动将其添加到配置文件的方法。

只是想知道这是否是你所知道的?

谢谢

   
Lcng 
2017年6月13日

# 回复:在Windows上使用让我们加密与IIS

好帖子。几年前,当我学习ASP.NET开发时,我读了你的帖子。你的帖子给了我很多帮助。这篇文章再次帮助了我很多。谢谢。谢谢。

   
Rick Strahl 
2017年7月6日

# 回复:在Windows上使用让我们加密与IIS

@Kit - 每次续订时,Lets Encrypt Win Simple都会提示重新创建计划任务。计划任务将贯穿所有站点。从理论上讲,您只需要设置一次,然后在后续请求中回答否,以防您进行更改(例如它运行的帐户)。续约仍将开火。续订任务每天触发一次,并在证书到期前检查证书到期日期。确切地说,当它检查并决定更新时,我不确定 - 您必须查看源以查看它们在计划任务操作中的确切操作(--renew)。

   
大卫 
2017年7月19日

# 回复:在Windows上使用让我们加密与IIS

ISTR Windows预定续订任务每24小时运行一次,但实际上只在需要时更新证书。这是一个隐藏的任务,用这些标志运行let'sencrypt ..--renew --baseuri“https://acme-v01.api.letsencrypt/”

   
大卫 
2017年7月19日

# 回复:在Windows上使用让我们加密与IIS

另一个给你瑞克....

众所周知 - 或者已经弄清楚 - 生成证书要求端口80和443开放[尽管可能只有443一旦帐户设置为续订..]。因此,我一直在研究DNS-01挑战,它将节省(在我的情况下)外围防火墙,IIS不使用端口80并且必须切换匿名身份验证以生成或续订证书。

是否-Letsencrypt-win-simple支持你知道吗,你有任何提示吗?

TIA

大卫

   
泰勒 
2017年8月27日

# 回复:在Windows上使用让我们加密与IIS

我无法为我的默认SSL站点创建新的SSL。

我的“默认站点”正在侦听所有地址上的所有http:80请求。

我尝试使用SNI设置SSL绑定,而LetsEncrypt没有接受它。

我通过在没有指示主机名的所有IP上创建HTTPS绑定来创建默认SSL站点(在IIS中收到警告)。

这没用。

我尝试使用SSL绑定创建一个新的站点,主机名和没有主机名(包括所有和单个IP),但这不起作用。

我在这里可以缺少什么?

   
Rick Strahl 
2017年8月28日

# 回复:在Windows上使用让我们加密与IIS

您必须绑定到特定域名,因此必须使用主机头设置站点,并且EACH主机头必须具有自己的证书。如果您有现有绑定或wildcart证书,那么它将无法正常工作。

使用LetsEncrypt-WinSimple并查看它生成的列表,如果它没有提取您的站点,则它没有正确配置Host Header / SNI / Bindings。

   
泰勒 
2017年9月11日

# 回复:在Windows上使用让我们加密与IIS

在纠正我的绑定并打开端口后,终于让我的工作了。然后,使用Certify。

   
斯科特 
2017年10月24日

# 回复:在Windows上使用让我们加密与IIS

不知道IIS会反向代理,而且有LetsEncrypt客户端。敲打文章!

对于像我这样的白痴,你可以在主题文章中添加关于win-simple的“run as admin”部分。

   
修复 
2017年11月12日

# 回复:在Windows上使用让我们加密与IIS

你好

对于多个域别名/子域,是否真的(仍然)不可能拥有一个SSL证书?我问,因为在我的Synology NAS上,这似乎没有任何问题,并且可以自动工作......在创建请求时有别名输入。

现在看看证明tw,但不是免费的anmyore,甚至不提供一次性购买!

感谢和问候

   
Rick Strahl 
2017年11月12日

# 回复:在Windows上使用让我们加密与IIS

@Fix - 当然你可以在IIS上拥有通配符证书,但是Lets Encrypt不会创建它们。您需要使用其他一些提供程序来获取通配符证书。根据Lets Encrypt的说法,通配符证书将在明年推出。

   
Georgi Lubomirov 
2017年11月22日

# 回复:在Windows上使用让我们加密与IIS

嗨,

我基于这篇文章创建了一个完全自动化的PowerShell脚本。它自动执行请求证书并将其分配给IIS站点的过程。它还可以处理续订。

https://github/GLubomirov/Lets-Encrypt_Automate_PowerShell

谢谢你这篇文章。希望我的剧本也会帮助你们。

祝你有个美好的一天,George Lubomirov

   
Rick Strahl 
2017年11月22日

# 回复:在Windows上使用让我们加密与IIS

@Georgi - 太棒了!

   
Vicky 
2018年1月29日

# 回复:在Windows上使用让我们加密与IIS

您好,我们想对我们的几个托管IIS 7.5站点使用Let's Encrypt,我们不使用主机头,而是绑定到端口80上的特定IP地址。使用的IP地址是我们通过防火墙分配的内部IP地址映射对应于客户端的实际域IP地址。我们正在努力寻找适合我们的工具..我知道Certify不会。你能为我们建议一个解决方案吗?

   
Rick Strahl 
2018年1月29日

# 回复:在Windows上使用让我们加密与IIS

@Vicky - 让加密使用域验证,这意味着必须让公众可以看到域以验证所有权。基本上,您必须在响应该域的服务器上运行LE。

因此,除非将IP暴露给Internet,否则无法使用它。也许您可以暂时获取证书,然后再关闭,但是然后更新也不起作用(除非您再次打开它)。

   
Jwan 
,2018年1月30日

# 回复:在Windows上使用让我们加密与IIS

我尝试了LetsEncrypt-Win-Simple,但它似乎不适用于我在IIS 8上安装的WordPress网站?

   
Vicky 
2018年1月30日

# 回复:在Windows上使用让我们加密与IIS

感谢Rick,我们的客户域使用在他们的DNS记录中分配的外部IP在互联网上可见。我们将他们的外部IP映射到我们的防火墙/网关上的内部IP并使用我们的绑定中的内部IP。我希望像Let's Encrypt Win Simple这样的工具让我们以某种方式使用外部IP请求LE证书,因为我们不使用主机头。

   
Rick Strahl 
2018年1月30日

# 回复:在Windows上使用让我们加密与IIS

@Vicky - 域名需要在没有任何特殊DNS配置的情况下公开显示,因为Lets Encrypt会向您的域发送消息以进行验证。您不需要主机标头,但如果您不使用它们(以及IIS 8及更高版本中的SNI),则每个证书都需要专用的IP地址。

   
Rick Strahl 
2018年1月30日

# 回复:在Windows上使用让我们加密与IIS

@Jwan - 不确定Wordpress如何处理证书URL请求。基本上让Lets加密调用网站上的特殊URL,而LE-WS应该设置配置,但网站仍然可以覆盖URL管理。

我想你可以找到更多关于如何在Wordpress中使用带有Wordpress的LE证书和Wordpress自定义插件的信息。

   
paultechguy 
2018年3月1日

# 回复:在Windows上使用让我们加密与IIS

刚刚使用了Certify,截至2018年3月1日,它完美无缺。很简单,很好。

感谢这篇精彩的文章和有用的内容。

   
Snehal Chauhan 
,2018年3月2日

# 回复:在Windows上使用让我们加密与IIS

IIS8及更高版本具有名为Central Certificate store的选项,您需要在特定路径上放置证书的pfx文件,无需安装证书。

有谁知道这是否支持包括安装和自动续订的let-encrypt。

   
迈克尔辛德勒 
2018年3月8日

# 回复:在Windows上使用让我们加密与IIS

信息一直在节省生命。我在一台生产服务器上快速更新了60个站点。我的问题是我在硬件负载平衡器后面有2个生产服务器。我有一个第三个Web服务器用于登台。通常,所有更改都在我的舞台服务器上进行,并推送到我的2台生产服务器。我无法在我的登台服务器上运行加密,因为它并不真正托管这些站点

我在我的一台生产服务器上运行letsencrypt。然后我将证书导出到我的舞台服务器。在舞台服务器上,我将证书绑定到站点。然后我将所有内容推回到2个制作服务器。我能想到让这更容易的唯一方法是在两台生产服务器上运行letsencrypt,让计划任务在两台服务器上续订证书。在这种情况下,我的生产服务器将具有不同密钥的证书。

我应该看一下更简单的方法吗?

   
Gfw 
2018年3月26日

# 回复:在Windows上使用让我们加密与IIS

我知道这是一个旧线程,但在使用Win-simple几年后,它现在无法为我的某个网站添加或续订证书。我也尝试过Certify并有类似的错误。从Win-simple ...

[INFO]插件IISBinding生成目标[IISBinding] yyyz(SiteId 21)[@ C:\ WebSites \ yyyZLtd \ wwwroot] [INFO]授权标识符:yyyz [INFO]使用http-01验证授权yyyz( SelfHosting)[INFO]现在可以在http://yyyz/.well-known/acme-challenge/LeSrNar5ASGN8NikDQQpyqhc05kCT5itxtrAkoKpSKs [EROR]中查看答案。授权结果:无效[EROR] NullReferenceException:对象引用未设置为实例宾语。

有什么建议或指导吗?

   
Joseph Ollero 
,2018年4月27日

# 回复:在Windows上使用让我们加密与IIS

好的文章!

您是否曾尝试在使用“共享配置”的Web场环境中使用let encrypt?示例:6个托管相同站点的Web服务器,它们在1个共享位置获取其内容和配置。

谢谢你的评论!

   
杰伊 
,2018年5月22日

# 回复:在Windows上使用让我们加密与IIS

谢谢Rick,但您的网站目前正在为我显示灰色信息图标。当我点击它时,它告诉我,我与该网站的连接并不完全安全。

如果我安装SLL,我希望自己的网站成为一个完整的绿色环保。想知道什么可能是灰色图标的原因?

   
香港 
2018年8月23日

# 回复:在Windows上使用让我们加密与IIS

好文章!我刚刚使用Certify在不到10分钟的时间内为基于IIS的网站添加SSL证书。

   
Paul Whitworth 
,2018年9月4日

# 回复:在Windows上使用让我们加密与IIS

谢谢!我刚开始使用CertifyTheWeb应用程序为三个基于IIS的站点添加SSL。这是一件轻而易举的事!正是我需要的。

   
克里斯 
2018年12月4日

# 回复:在Windows上使用让我们加密与IIS

真的很有用 - 非常感谢这篇文章。IIS证书安装完全无痛。您的博客已加入书签!

转载于:https://wwwblogs/webenh/p/10134790.html

本文标签: WindowsIIS