7

我向我的 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 端点设置了一个单独的自签名证书:

服务定义.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>

服务配置.Local.cscfg

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

4 回答 4

9

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

  • 删除(本地和云).cscfg 文件中的所有“Microsoft.WindowsAzure.Plugins.RemoteAccess. * ”
  • 删除两个 .cscfg 文件中的 "Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption"
  • 从 csdef 文件中删除<Import moduleName="RemoteAccess" /> 和。<Import moduleName="RemoteForwarder" />
  • 保存并重新编译。如果您以后需要激活远程桌面,那么过程将在本文中描述。

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

于 2013-02-08T16:37:02.450 回答
1

嗯,有两件事:

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

后者一点也不差,但是您应该知道您的所有证书以及哪个证书用于什么。

首先,在 Azure 角色实例上启用远程桌面需要 X.509 证书。它是通过在配置文件(csdef)中指示证书的指纹来配置的。这是必需的,因为 RDP 帐户的密码已使用该证书加密。该密码加密是打包过程(或更准确地说是远程桌面向导过程)的一部分。您必须将该证书单独上传到您将部署包的 Windows Azure 云服务。并且在本地用户的商店中也有该证书。

第二个证书用于 HTTPS。它也被描述为指纹和位置。但是 HTTPS 证书通常位于local machine存储区,而不是current user存储区。此 X.509 证书必须再次单独上传到云服务并且必须存在。您可以在此处阅读有关如何为 Windows Azure 云服务配置 HTTPS 端点的信息。为了使打包工作正常,HTTPS 端点证书需要位于本地计算机存储(或更准确地说是 Web 托管存储 - 如果您打开 IIS 管理器并导航到Server Certificates,您必须能够在那里看到证书)。这是 HTTPS 证书的预期位置,这就是打包要求它存在的原因。这就是它抱怨找不到它的原因。因为您的密码加密证书(您表示也用于 HTTPS)不在本地计算机的存储中。

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

建议阅读:

于 2013-02-08T08:00:03.793 回答
1

非常简单:在 Visual Studio 中,转到“配置远程桌面”,单击查看证书,然后单击证书路径以查看友好的证书名称。在窗口开始键入“certmgr.msc”并选择 certmgr,打开 Personal/Certificate 并找到“来自 Visual Studio 的证书,突出显示并右键单击并复制。转到 Trusted Root Certification Autorities/Certificate and Paste。瞧,警告有走了

于 2013-04-04T00:09:29.470 回答
-1

我通过在我的 Windows 10 上安装 IIS 解决了这个问题,正如 w.brian 在评论中提到的那样

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

于 2020-12-30T09:44:54.253 回答