【发布时间】:2014-07-24 17:29:59
【问题描述】:
我继承了从 AD 中提取 userCertificate 的代码:
byte[] userCERT = (byte[])attribs.get("userCertificate").get();
ByteArrayInputStream bais = new ByteArrayInputStream( (userCERT)) ;
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(bais);
我现在需要做的恰恰相反。用户将通过网络提交他们的公钥。是否像这样简单地获取字符串并对其执行 toBytes() :
ByteArrayInputStream bais = new ByteArrayInputStream(userCertificateString.getBytes()) ;
Attribute modCert = new BasicAttribute("userCertificate", bais);
mods[0] = new ModificationItem(context.REPLACE_ATTRIBUTE, modCert);
context.modifyAttributes(dn + "," + searchBase, mods);
更新:事情没这么简单。这不起作用。
任何指导都会很棒。
【问题讨论】:
-
它不起作用。 AD 说它想要一个 DER 编码的 X509v3。所以我想我必须以某种方式从字符串构建其中一个并将其转换为 byte[]
标签: java active-directory x509certificate