Внедрение сертификата .p12 over cer - PullRequest
0 голосов
/ 28 января 2020

Я работаю над реализацией SSL как для REST (использую модификацию для Android), так и для Socket. Но меня просят использовать только самоподписанный сертификат p12 для реализации. Я должен реализовать формат "X.509 v3". Если я непосредственно реализую .p12 в следующем коде, я получаю строку «generateCertificate»

java.security.cert.CertificateException:   com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

, код выглядит следующим образом.

import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory;

CertificateFactory cf = CertificateFactory.getInstance("X.509");
                    fileInputStream = new FileInputStream(filePathFromStorage);
                    InputStream inputStream = new BufferedInputStream(fileInputStream);
                    Certificate ca = cf.generateCertificate(inputStream);

                    String keyStoreType = KeyStore.getDefaultType();
                    KeyStore keyStore = KeyStore.getInstance(keyStoreType);
                    keyStore.load(null, null);
                    keyStore.setCertificateEntry("ca", ca);

                    String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
                    TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
                    tmf.init(keyStore);

                    SSLContext sslContext;
                    sslContext = SSLContext.getInstance("TLSv1.2");
                    sslContext.init(null, tmf.getTrustManagers(), null);
                    SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
                    return sslSocketFactory;

Насколько я исследовал, он должен не будет отличаться с точки зрения безопасности и шифрования, если мы используем p12 или cer, если мы используем формат X.509v3. Нужна помощь, чтобы понять это. И что я здесь делаю неправильно, что приводит к приведенному выше исключению? Насколько я искал на Android веб-сайте , Android до сих пор не поддерживает версию V3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...