如何使用msbuild添加可在IIS中使用的安全证书

时间:2012-05-09 17:53:52

标签: security deployment iis-7 msbuild msbuildextensionpack

我有这个目标

<Target Name = "AddLocalCertificate">       
    <MSBuild.ExtensionPack.Security.Certificate TaskAction="Add" FileName="$(CertificateLocation)" CertPassword="$(CertificatePassword)">           
        <Output TaskParameter="Thumbprint" PropertyName="CertificateHash"/>             
    </MSBuild.ExtensionPack.Security.Certificate>
</Target>

并在另一个目标中使用此绑定语句

<MSBuild.ExtensionPack.Web.Iis7Binding
  CertificateHash="$(CertificateHash)" 
  TaskAction="Add" MachineName="$(MachineName)" Name="$(SiteName)" BindingInformation="*:$(HttpsPort):$(SiteName)" BindingProtocol="https"/>

然而,当我运行目标时,我收到错误

  

使用证书创建绑定:拇指打印   'DBE4964B4C4D0F185E8B1D421D736390AE586EBF''stor e'MY'   C:\项目\ RC19_Release2 \ ExternalBinaries \ MSBuildGlobalFiles \ ManageWebsite.targets(154,3):   错误:COMException:指定的登录会话不存在。它   可能已经被终止了。 (来自HRESULT的例外情况:   0x80070520)\ r   C:\项目\ RC19_Release2 \ ExternalBinaries \ MSBuildGlobalFiles \ ManageWebsite.targets(154,3):   错误:

当我查看IIS时,它创建了网站并且绑定就在那里,但它似乎无法找到证书,如果我查看IIS上的“服务器证书”,那么我看不到我的证书

如果我做MMC - &gt;证书卡入并转到当前用户然后我可以在那里看到我的证书。

如何从IIS / msbuild中访问该证书,或者让msbuild在正确的位置创建它以使IIS满意?

msbuild扩展程序帮助页面是http://www.msbuildextensionpack.com/help/4.0.5.0/html/45763eac-8f14-417d-9b27-425161982ffe.htm,但它对我帮助不大!

由于

1 个答案:

答案 0 :(得分:6)

嗯,我得到了它的工作......显然没有人关心我,D

实质性的改变是将Exportable =“True”MachineStore =“True”添加到证书添加任务中,如此

<MSBuild.ExtensionPack.Security.Certificate TaskAction="Add" Exportable="True" MachineStore="True" FileName="$(CertificateLocation)" CertPassword="$(CertificatePassword)">         
        <Output TaskParameter="Thumbprint" PropertyName="CertificateHash"/>             
    </MSBuild.ExtensionPack.Security.Certificate>   

再次在世界上一切都很好。