代码之家  ›  专栏  ›  技术社区  ›  PPD

在android中从X509Certificate中提取组织名称

  •  1
  • PPD  · 技术社区  · 7 年前

    嗨,我想从X509Certificate中提取组织名称。对于大多数应用程序,我得到了这个组织名称,但是对于Amazon应用程序,我无法提取这个名称,因为对于Amazon应用程序 x509Cert.getIssuerDN().toString(); 在OU O和L值之间返回不带“,”的结果。

    我使用以下代码:

    CertificateFactory certFactory = CertificateFactory.getInstance("X509");
                    X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(certStream);
                    String temp = x509Cert.getIssuerDN().toString();
    

    对于其他应用程序,temp如下:

    CN=MAP4 Platform 466-1, OU=MDb, O=Motorola, L=Libertyville, ST=Illinois, C=US
    CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
    CN=Microsoft Corporation Third Party Marketplace (Do Not Trust), OU=Android Marketplace Signing for Microsoft Office, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US
    

    上面是OU,O,L之间的分隔符(,),但是对于amazon应用程序,没有分隔符,下面是两个amazon应用程序的结果:

    CN=Amazon Self-Sign CA, OU="Java Object Signing O=Amazon Services LLC L=Las Vegas", ST="Nevada C=US"
    CN=Amazon Self-Sign CA, OU="Java Object Signing O=Amazon Services LLC L=Las Vegas", ST="Nevada C=US"
    

    现在从上面的结果我将如何得到O的值?如有任何建议,我们将不胜感激。谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   pedrofb    7 年前

    如注释所示,证书不包含 O 属性。证书的创建者似乎犯了一个错误,并包含了 O型 L 属性作为 OU

    你可以用OpenSSL检查它。提取 META-INF/ANDROID.RSA 从apk执行

    openssl pkcs7 -inform DER -in ANDROIDS.RSA -noout -print_certs -text
    

    openssl

    因此,要提取 O型 属性,解析 欧点 属性并查找“O=[值]”