【问题标题】:Create a Computer Request Including IP address Subject Alternative Name创建包括 IP 地址主题备用名称的计算机请求
【发布时间】:2023-03-23 19:35:01
【问题描述】:

我正在尝试使用 IP 地址 SAN 创建一个请求。这是负责创建 CAalternativeName 的函数:

public static CAlternativeNameClass GetCurrentIpName() {
    //get current machine IP address
    IPAddress ip = GetCurrentIp();

    if (ip == null) {
        return null;
    }

    try {
       CAlternativeNameClass nameClass = new CAlternativeNameClass();
       nameClass.InitializeFromString(AlternativeNameType.XCN_CERT_ALT_NAME_IP_ADDRESS, ip.ToString());
       return nameClass;   
    } catch (Exception e) {
        Console.WriteLine(e);
        return null;
    }
}

问题是我收到下一个错误:

System.ArgumentException: Value does not fall within the expected range.
              at CERTENROLLLib.CAlternativeNameClass.InitializeFromString(AlternativeNameType Type, String strValue)

我做错了什么?

【问题讨论】:

    标签: c# self-signed certenroll


    【解决方案1】:

    InitializeFromString 不接受 XCN_CERT_ALT_NAME_IP_ADDRESS** 的 AlternativeNameType。您必须改用 InitializeFromRawData。这个错误有点用词不当,因为它实际上不是问题的值参数,而是类型,但是嘿。

    InitializeFromRawData 将字符串作为输入(因为这是 Microsoft,而不是 Ronseal),因此您需要将原始数据编码为字符串,以便它可以再次将其转换为原始数据:

    String ipBase64 = Convert.ToBase64String(ip.GetAddressBytes());
    nameClass.InitializeFromRawData(AlternativeNameType.XCN_CERT_ALT_NAME_IP_ADDRESS, EncodingType.XCN_CRYPT_STRING_BASE64, ipBase64);
    

    与埃舍尔的艺术作品一样直观。

    ** 来源:http://msdn.microsoft.com/en-us/library/windows/desktop/aa375024%28v=vs.85%29.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 2011-06-23
      • 2015-05-16
      • 2021-06-24
      • 2013-03-28
      相关资源
      最近更新 更多