添加HTTPS端点后,我收到此警告:在证书存储中找不到“Microsoft.WindowsAzure.Plugins.PasswordEncryption”

时间:2013-02-08 06:51:59

标签: azure azure-web-roles

我在我的WebRole中添加了一个HTTPS端点,现在当我尝试运行Azure模拟器时,我收到以下警告,导致计算机模拟器停止并且调试器保释:

Warning: The SSL certificate 'Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption' for endpoint 'HttpsIn' of role 'MyProj.Web' was not found in the local machine's certificate store.

此证书与HTTPS端点无关。它也不(也不应该)在本地计算机的证书存储上 - 它确实存在于CurrentUser证书存储区(我已经检查过)。我试图在我的ServiceConfiguration中完全删除对该证书的引用,只是为了看看会发生什么,但它会自动重新添加。

任何帮助都将不胜感激。

修改

为了清楚起见,我尝试使用Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption证书作为我的SSL证书。我已在本地计算机商店中为HTTPS端点成功设置了单独的自签名证书:

ServiceDefinition.csdef中

    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" />
      <Binding name="HttpsIn" endpointName="HttpsIn" />
    </Bindings>
    ...
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="AzureSSL" />
    </Endpoints>
    ...
    <Certificates>
      <Certificate name="AzureSSL" storeLocation="LocalMachine" storeName="My"/>
    </Certificates>

ServiceConfiguration.Local.cscfg

<Certificates>
  <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="xxxxxxxxxx" thumbprintAlgorithm="sha1" />
  <Certificate name="AzureSSL" thumbprint="xxxxxxxxxx" thumbprintAlgorithm="sha1" />
</Certificates>

4 个答案:

答案 0 :(得分:8)

WebRole正在添加RemoteAccess证书设置并在LocalMachine中查找证书,因为SDK 1.8将<Import moduleName="RemoteAccess" />添加到csdef文件中。要解决此问题:

  • 同时删除所有“Microsoft.WindowsAzure.Plugins.RemoteAccess。 * ” (本地和云).cscfg文件
  • 删除“证书 NAME = “Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption” 在.cscfg文件中
  • 从csdef文件中删除<Import moduleName="RemoteAccess" /><Import moduleName="RemoteForwarder" />
  • 保存&amp;重新编译。如果您需要稍后激活远程桌面,则在this article
  • 中描述了该过程

或者,您可以将RDP证书添加到LocalMachine商店。

答案 1 :(得分:1)

嗯,有两件事:

  • 证书通常与HTTPS端点有很大关系。因为HTTPS端点也需要证书,对吗?
  • 从错误消息中可以清楚地看到,您还选择了用于HTTPS端点的远程桌面密码加密证书。

后者并不坏,但你应该知道你的所有证书以及哪一个用于什么。

首先,在Azure角色实例上启用远程桌面需要X.509证书。它通过在配置文件(csdef)中指示证书的指纹来配置。这是必需的,因为RDP帐户的密码是使用该证书加密的。密码加密是打包过程的一部分(或者更准确地说是远程桌面向导过程)。你必须separately upload that certificate to the Windows Azure Cloud Service部署你的包。并且在本地用户的商店中也有该证书。

第二个证书适用于HTTPS。它也被描述为指纹和位置。但是,HTTPS证书通常位于local machine商店,而不是current user商店。此X.509证书必须再次单独上载到Cloud Service,并且必须存在于此处。您可以阅读here on how to configure HTTPS endpoint for Windows Azure Cloud Service。为了使打包工作正常,HTTPS端点证书需要位于本地计算机存储(或更准确地说是Web Hosting存储 - 如果打开IIS管理器并导航到Server Certificates,您必须能够看到证书那里)。这是HTTPS证书的预期位置,这就是包装要求它存在的原因。这就是为什么它抱怨它无法找到它。因为您的密码加密证书(您表示也用于HTTPS)不在本地计算机的商店中。

最后但并非最不重要的是,程序包使用的证书是在您的云服务项目的properties的“证书”部分中配置的。

建议读物:

答案 2 :(得分:1)

非常简单:在Visual Studio中,转到“配置远程桌面”,单击“查看证书”,然后单击“证书路径”以查看友好证书名称。在窗口启动类型“certmgr.msc”并选择certmgr,打开个人/证书并找到“来自Visual Studio的证书,突出显示并右键单击并复制。转到受信任的根证书认证和证书并粘贴。瞧,警告已经去

答案 3 :(得分:-1)

我通过在 Windows 10 as w.brian mentioned in a comment 上安装 IIS 解决了这个问题:

<块引用>

我实际上已经从另一个 SO 问题中解决了这个问题。显然,在您安装完整的 IIS 之前,IIS Express 不能很好地与 Azure SSL 端点配合使用。您甚至不需要使用完整的 IIS,只需安装它。