在 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 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。