在 HDInsight 中将服务主体证书内容转换为 base-64 编码的字符串格式

本文介绍在与 Azure HDInsight 群集交互时出现的问题的故障排除步骤和可能的解决方案。

问题

你会收到一条错误消息,指出输入不是有效的 Base-64 字符串,因为它包含非 Base 64 字符、两个以上的填充字符,或者在填充字符中包含非空格字符。

原因

在使用 PowerShell 或 Azure 模板部署创建具有 Data Lake 的群集作为主存储或更多存储时,所提供的用于访问 Data Lake 存储帐户的服务主体证书内容采用 base-64 格式。 将 pfx 证书内容转换为 base-64 编码的字符串不正确可能会导致此错误。

解决方法

获得 pfx 格式的服务主体证书后(有关服务主体创建步骤的示例,请参阅此处),请使用以下 PowerShell 命令或 C# 代码片段将证书内容转换为 base-64 格式。

$servicePrincipalCertificateBase64 = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes(path-to-servicePrincipalCertificatePfxFile))
using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var certContents = File.ReadAllBytes(@"<path to pfx file>");
            string certificateData = Convert.ToBase64String(certContents);
            System.Diagnostics.Debug.WriteLine(certificateData);
        }
    }
}

后续步骤

如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。