Android : Entrust 인증서를 사용하여 HTTPS 연결을 설정할 수 없습니다.

Lv.0 Shian

특히이 웹 사이트 ( https://elearning.utp.edu.my/)에 HTTPS 연결을 설정하고 싶었습니다.

SSL 도구에서 웹 사이트가 Entrust_L1K 인증서를 사용했는지 확인한 다음 Chrome 브라우저에서 인증서 파일을 내 보냅니다.

Android 개발자 웹 사이트에서 제공하는 코드를 사용해 보았습니다.

 try {
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            InputStream caInput = mContext.getResources().openRawResource(R.raw.entrust_l1k);
            Certificate ca;
            try {
                ca = cf.generateCertificate(caInput);
                System.out.println("ca = " + ((X509Certificate) ca).getSubjectDN());
            } finally {
                caInput.close();
            }

            // Create a KeyStore containing our trusted CAs
            String keyStoreType = KeyStore.getDefaultType();
            KeyStore keyStore = KeyStore.getInstance(keyStoreType);
            keyStore.load(null, null);
            keyStore.setCertificateEntry("ca", ca);

            // Create a TrustManager that trusts the CAs in our KeyStore
            String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
            TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
            tmf.init(keyStore);

            // Create an SSLContext that uses our TrustManager
            SSLContext context = SSLContext.getInstance("TLS");
            context.init(null, tmf.getTrustManagers(), null);

            HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
            urlConnection.setConnectTimeout(7000);
            urlConnection.setRequestMethod("GET");
            urlConnection.setDoInput(true);
            urlConnection.connect();

            int responseCode = urlConnection.getResponseCode();

            switch (responseCode) {
                case HttpsURLConnection.HTTP_OK:

                    InputStream in = urlConnection.getInputStream();

                    Scanner scanner = new Scanner(in);
                    scanner.useDelimiter("\\A");

                    boolean hasInput = scanner.hasNext();
                    if (hasInput) {
                        return scanner.next();
                    } else {
                        return null;
                    }


                default:
                    return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

그러나 여전히 다음 오류 코드가 나타납니다.

W/System.err: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Stack Overflow에서 여러 솔루션을 시도했습니다.

모든 인증서를 신뢰하지 않고 HTTPS에 연결하는 모범 사례를 배우고 싶습니다. 누구든지 나를 안내해 주시면 감사하겠습니다.

수정 1 : Firefox를 사용하여 "로그인"을 클릭하면 "elearning.utp.edu.my가 유효하지 않은 보안 인증서를 사용합니다."라는 경고 메시지가 표시됩니다. 그러나 Chrome을 사용하여 웹 사이트에 "보안"연결을 설정할 수 있습니다. 웹 사이트는 다음과 같습니다 : https://elearning.utp.edu.my/login/index.php

Nandsito

L1K인증서는에 의해 서명 Root G2키 저장소 / 신뢰 관리자에게뿐만 아니라 그것을 추가해야하므로, 인증서 :

caInput = mContext.getResources().openRawResource(R.raw.entrust_root_g2);
try {
    ca = cf.generateCertificate(caInput);
    System.out.println("ca = " + ((X509Certificate) ca).getSubjectDN());
} finally {
    caInput.close();
}

// Use the same keystore.
// Mind the different alias.

keyStore.setCertificateEntry("ca2", ca);

SSLContext연결에 연결해야합니다. 연결 개체를 인스턴스화 한 후 바로 수행하고 싶을 것입니다.

urlConnection.setSSLSocketFactory(context.getSocketFactory());

참고 : 특정 웹 사이트에 연결하겠다고했지만이 TLS 구성은 다른 인증서를 거부합니다. 예를 들어 URL을 https://stackoverflow.com/TLS 핸드 셰이크 로 변경 하면 실패합니다. 사용자 지정 인증서와 기본 인증서를 수락 하려면 https://stackoverflow.com/a/24561444/2657100을 참조 하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Caddy에서 curl을 사용하여 https 사이트 서버에 연결할 수 없습니다.

분류에서Dev

SCRAM 인증을 사용하여 클라이언트를 kafka 서버에 연결할 수 없습니다.

분류에서Dev

Unity IOS 앱은 UnityWebRequest를 사용하여 자체 서명 된 인증서 HTTPS를 호출 할 수 없습니다.

분류에서Dev

클래스 로더를 사용하여 연결을 설정할 수 없습니다.

분류에서Dev

Android SDK 3을 사용하여 Facebook에 연결할 수 없습니다.

분류에서Dev

Mac / OS에서 SSL 모듈을 사용할 수 없기 때문에 HTTPS URL에 연결할 수 없습니다.

분류에서Dev

다른 도메인에서 창 인증을 사용하여 다른 도메인 및 mvc 앱에서 ADFS를 설정할 수 없습니다.

분류에서Dev

인터넷 정보 서비스 V 8.5에서 https 설정을 사용할 수 없습니다.

분류에서Dev

`?`를 사용하여 null 및 설정 값을 확인할 수 없습니다.

분류에서Dev

이더넷을 사용하여 인터넷에 연결할 수 없습니다.

분류에서Dev

ibapi를 사용하여 Python을 TWS와 연결할 수 없습니다.

분류에서Dev

cmd.exe를 사용하여 dll을 연결할 수 없습니다.

분류에서Dev

직렬 연결을 사용하여 GDBserver를 시작할 수 없습니다.

분류에서Dev

http://127.0.0.1:3000을 사용하여 노드 js를 연결할 수 없습니다.

분류에서Dev

Docker를 사용하여 PhpStorm을 xdebug와 연결할 수 없습니다.

분류에서Dev

MySql을 사용하여 Win Xp 서버에 연결할 수 없습니다.

분류에서Dev

openvpn을 사용하여 VPN에 연결할 수 있지만 인터넷에 연결할 수 없습니다.

분류에서Dev

Node.js를 사용하여 Google 서비스 계정을 인증 할 수 없습니다.

분류에서Dev

wpa_supplicant를 사용하여 연결할 수 없습니다.

분류에서Dev

Docker를 사용하여 Mysql에 연결할 수 없습니다.

분류에서Dev

PuTTY ssh를 사용하여 연결할 수 없습니다.

분류에서Dev

wpa_supplicant를 사용하여 연결할 수 없습니다.

분류에서Dev

SoapClient PHP를 사용하여 연결할 수 없습니다.

분류에서Dev

Java를 사용하여 Hbase에 연결할 수 없습니다.

분류에서Dev

Schemacrawler를 사용하여 MSSQL에 연결할 수 없습니다.

분류에서Dev

Ansible을 사용하여 도메인 계정으로 Windows 서버에 연결할 수 없습니다.

분류에서Dev

ssh를 사용하여 Android에서 우분투 14.04에 연결할 수 없습니다.

분류에서Dev

특정 HTTPS 사이트에 연결할 수 없습니다.

분류에서Dev

특정 HTTPS 사이트에 연결할 수 없습니다.

Related 관련 기사

  1. 1

    Caddy에서 curl을 사용하여 https 사이트 서버에 연결할 수 없습니다.

  2. 2

    SCRAM 인증을 사용하여 클라이언트를 kafka 서버에 연결할 수 없습니다.

  3. 3

    Unity IOS 앱은 UnityWebRequest를 사용하여 자체 서명 된 인증서 HTTPS를 호출 할 수 없습니다.

  4. 4

    클래스 로더를 사용하여 연결을 설정할 수 없습니다.

  5. 5

    Android SDK 3을 사용하여 Facebook에 연결할 수 없습니다.

  6. 6

    Mac / OS에서 SSL 모듈을 사용할 수 없기 때문에 HTTPS URL에 연결할 수 없습니다.

  7. 7

    다른 도메인에서 창 인증을 사용하여 다른 도메인 및 mvc 앱에서 ADFS를 설정할 수 없습니다.

  8. 8

    인터넷 정보 서비스 V 8.5에서 https 설정을 사용할 수 없습니다.

  9. 9

    `?`를 사용하여 null 및 설정 값을 확인할 수 없습니다.

  10. 10

    이더넷을 사용하여 인터넷에 연결할 수 없습니다.

  11. 11

    ibapi를 사용하여 Python을 TWS와 연결할 수 없습니다.

  12. 12

    cmd.exe를 사용하여 dll을 연결할 수 없습니다.

  13. 13

    직렬 연결을 사용하여 GDBserver를 시작할 수 없습니다.

  14. 14

    http://127.0.0.1:3000을 사용하여 노드 js를 연결할 수 없습니다.

  15. 15

    Docker를 사용하여 PhpStorm을 xdebug와 연결할 수 없습니다.

  16. 16

    MySql을 사용하여 Win Xp 서버에 연결할 수 없습니다.

  17. 17

    openvpn을 사용하여 VPN에 연결할 수 있지만 인터넷에 연결할 수 없습니다.

  18. 18

    Node.js를 사용하여 Google 서비스 계정을 인증 할 수 없습니다.

  19. 19

    wpa_supplicant를 사용하여 연결할 수 없습니다.

  20. 20

    Docker를 사용하여 Mysql에 연결할 수 없습니다.

  21. 21

    PuTTY ssh를 사용하여 연결할 수 없습니다.

  22. 22

    wpa_supplicant를 사용하여 연결할 수 없습니다.

  23. 23

    SoapClient PHP를 사용하여 연결할 수 없습니다.

  24. 24

    Java를 사용하여 Hbase에 연결할 수 없습니다.

  25. 25

    Schemacrawler를 사용하여 MSSQL에 연결할 수 없습니다.

  26. 26

    Ansible을 사용하여 도메인 계정으로 Windows 서버에 연결할 수 없습니다.

  27. 27

    ssh를 사용하여 Android에서 우분투 14.04에 연결할 수 없습니다.

  28. 28

    특정 HTTPS 사이트에 연결할 수 없습니다.

  29. 29

    특정 HTTPS 사이트에 연결할 수 없습니다.

뜨겁다태그

보관