본문 바로가기
IT/Java

Jsoup에서 인증서 error 우회하는 방법

by bamcong 2025. 3. 24.
728x90
반응형

이 포스팅에서는 Jsoup 라이브러리를 사용하여 웹할 때 인증서 오류를 우회하는 방법에 대해 설명하겠습니다. 웹 스크래핑을 할 때 SSL 인증서 문제로 인해 실패할 때가 종종 있습니다. 이 문제를 해결하기 위한 방법을 구체적으로 살펴보겠습니다.

jsoup 공식 Git

1. Jsoup 소개

Jsoup은 자바 기반의 HTML 파싱 라이브러리로, 이를 통해 HTML을 가져오고 파싱할 수 있으며, 특정 요소를 추출할 수 있습니다. 자바 생태계에서 널리 사용되고 있는 강력한 라이브러리입니다. 하지만 사용자가 HTTPS 프로토콜을 통해 웹 페이지에 접속할 때, SSL 인증서와 관련된 이슈가 발생할 수 있습니다.

2. 인증서 오류의 원인

SSL 인증서 오류는 주로 세 가지 이유로 발생합니다:

  • 서버의 SSL 인증서가 만료됨
  • 신뢰할 수 없는 인증서를 사용한 경우
  • 클라이언트의 시스템 시간이 잘못 설정된 경우

3. Jsoup을 이용한 인증서 오류 우회 방법

인증서 오류를 우회하려면, Jsoup에서 SSL 인증서 검증을 비활성화하면 됩니다. 아래 예제 코드를 통해 인증서 오류를 우회하는 방법을 알아보겠습니다.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class JsoupExample {
    public static void main(String[] args) {
        try {
            // SSL 인증서 검증을 우회하는 설정
            TrustManager[] trustAllCerts = new TrustManager[] {
                new X509TrustManager() {
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                    }
                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                    }
                }
            };
            
            SSLContext sc = SSLContext.getInstance("TLS");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
                public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {
                    return true;
                }
            });

            // Jsoup을 사용하여 웹 페이지 가져오기
            Document document = Jsoup.connect("https://your-secure-url.com").get();
            System.out.println(document.title());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 코드에서는 SSL 인증서 검증을 비활성화 하고, Jsoup을 통해 특정 웹 페이지에 접근합니다. 주의할 점은 이러한 방식으로 SSL 인증서 검증을 우회하는 것은 보안상의 위험이 있으므로 실제 배포 환경에서는 사용하지 않는 것이 좋습니다. 오직 개발 및 테스트 용도로만 사용하시기 바랍니다.

4. 코드 정리 및 테스트

위의 코드를 통하여 SSL 핸들링을 처리한 후, Jsoup의 Document 객체를 사용하여 원하는 HTML 요소를 잘 추출할 수 있습니다. 이 코드가 적절히 동작하는지 확인하기 위해 실제로 사용할 URL을 바꿔서 테스트해 보세요.

결론적으로 , Jsoup을 사용할 때 SSL 인증서 오류가 발생하는 경우 위와 같은 방법으로 문제를 우회할 수 있습니다. 하지만, 실제로 신뢰할 수 있는 인증서를 사용하는 것이 최우선이라는 점을 잊지 말아야 합니다.

 

728x90
반응형