参见英文答案 >
How to extract CN from X509Certificate in Java? 16个答案 首先让我说这是一个美学问题。我已经解决了自己的问题,我只是对更好的方法感到好奇。
所以,我有一个DN证书,如下所示:
CN = Jimmy Blooptoop,OU = Someplace,OU = Employees,DC = Bloopsoft-Inc
现在,我想从中获取CN。在java中,除了使用Xoun9证书中的完整DN而没有使用像bouncy castle这样的第三方库时,没有原生支持可以抓取任何东西 – 我无法使用它。所以我必须解析它,这不是什么大问题。唯一让它有点棘手的事实是CN并不总是被格式化为< first name> 。通常情况下,它实际上将是, 。因此,在上面的例子中,CN可以是Jimmy Blooptoop或Blooptoop,Jimmy J(当然是Joop的缩写)。
在阅读了关于正则表达式的内容之后,我写了以下内容,它运作良好:
Matcher m = Pattern.compile("CN=[A-Za-z]*[, ]*[ A-Za-z]*").matcher(dn);
if (m.find())
cn = m.group();
我只是好奇是否有看起来不像垃圾的表情。我非常有信心,因为我在阅读了正则表达式的介绍之后就已经解决了这个问题。