2016-03-21 24 views
15

Android'de OCSP doğrulamasını uygulamaya çalışırken son birkaç gündür kafamı duvara çarpıyorum.OCSP sertifika zımbalaması Android'de

Şimdiye kadar iOS'ta uygulamak kolay oldu, ancak Android için karşılaştığım her bir bilgi parçası işe yaramıyor. Sertifika iptal etme testlerini çalıştırmak için hem müşterimin API son noktasını hem de this website'u kullanıyorum ve şu ana kadar Android Uygulamamın içinde iptal edilmiş bir sertifikayı algıladığım için şansım olmadı. OKHTTPClient kullanıyorum. İşte HttpURLConnection veya HttpsURLConnection https durumunda yapı içinde Android'in kullanmayı deneyin OkHttp kullanmanın

public void checkServerTrusted(X509Certificate[] chain, String authType) 
      throws CertificateException { 

     assert (chain != null); 
     if (chain == null) { 
      throw new IllegalArgumentException(
        "checkServerTrusted: X509Certificate array is null"); 
     } 

     assert (chain.length > 0); 
     if (!(chain.length > 0)) { 
      throw new IllegalArgumentException(
        "checkServerTrusted: X509Certificate is empty"); 
     } 

     if (VERIFY_AUTHTYPE) { 
      assert (null != authType && authType.equalsIgnoreCase(AUTH_TYPE)); 
      if (!(null != authType && authType.equalsIgnoreCase(AUTH_TYPE))) { 
       throw new CertificateException(
         "checkServerTrusted: AuthType is not " + AUTH_TYPE); 
      } 
     } 

     if(chain[0]!=null){ 
      try { 
       X509Certificate issuerCert = chain[1]; 
       X509Certificate c1 = chain[0]; 
       TrustAnchor anchor = new TrustAnchor(issuerCert, null); 
       Set anchors = Collections.singleton(anchor); 
       CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
       List list = Arrays.asList(new Certificate[]{c1}); 
       CertPath path = cf.generateCertPath(list); 
       PKIXParameters params = new PKIXParameters(anchors); 
       // Activate certificate revocation checking 
       params.setRevocationEnabled(false); 
       // Activate OCSP 
       Security.setProperty("ocsp.enable", "true"); 

       // Ensure that the ocsp.responderURL property is not set. 
       if (Security.getProperty("ocsp.responderURL") != null) { 
        throw new 
          Exception("The ocsp.responderURL property must not be set"); 
       } 
       CertPathValidator validator = CertPathValidator.getInstance("PKIX"); 
       PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult) validator 
         .validate(path, params); 

       System.out.println("VALID"); 
      } catch (Exception e) { 
       System.out.println("EXCEPTION " + e.getMessage()); 
       e.printStackTrace(); 
      } 

cevap

0

yerine sertifika iptalini doğrulamak yöntem var: //

İlgili konular