更改由Windows 2012 Active Directory证书服务生成的CSR中的ASN.1标记types

我正在尝试在Debian上使用OpenSSL 1.0.1e来签署来自Windows 2012 Active Directory证书服务(ADCS)下的下级CA的初始设置的证书签名请求。 我的问题是ADCS使用“ PRINTABLESTRING ”格式编码CSR的string项目。

我想将ADCS使用的格式从“ PRINTABLESTRING ”更改为“ UTF8STRING ”,因为OpenSSL不能识别string项目的相等性,然后拒绝CSR(我使用匹配策略设置进行属性比较)。

我找不到任何选项更改格式。 这种改变是可能的吗?

我发现有关这一点的有趣的信息 :

  1. 打开原始CSR并在“—– BEGIN CERTIFICATE REQUEST —–”和“—– END CERTIFICATE REQUEST —–”标记之间复制base64数据。
  2. 把这些数据放到一个base64解码器中,并把输出保存为一个二进制文件。 有各种各样的在线服务可以做到这一点,或者如果你喜欢有本地工具。
  3. 下载/安装十六进制编辑器。 用它来打开解码的二进制文件。
  4. 在countryName:0C 02之前查找两个值
  5. 编辑值0C(UTF8String)并将其更改为13(Printablestring)
  6. 保存更改并使用base64编码器将其编码回base64。
  7. 在“—– BEGIN CERTIFICATE REQUEST —–”和“—– END CERTIFICATE REQUEST —–”标记之间添加base64数据。