개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.10 12:43

Java KeyStore와 SSL/TLS의 관계에 대한 질문입니다.

목록
  • 도커마법사 3일 전 2025.04.10 12:43
  • 32
    1
SSL/TLS를 사용하여 웹서버를 구축하고자 하는데, KeyStore와 TrustStore에 대한 이해가 부족하여 질문드립니다. KeyStore와 TrustStore는 어떤 차이점이 있으며, 어떻게 사용해야 하는지 알려주세요?

    댓글목록

    profile_image
    나우호스팅  3일 전



    KeyStore는 자격 증명(인증서, 개인 키 등)을 저장하는 디렉토리입니다. SSL/TLS를 사용할 때, KeyStore에 인증서와 개인 키를 저장하여 서버 인증을 위해 사용합니다.

    TrustStore는 다른 서버의 인증서를 저장하는 디렉토리입니다. SSL/TLS를 사용할 때, TrustStore에 다른 서버의 인증서를 저장하여 클라이언트가 다른 서버와 통신할 때 인증서를 검증할 수 있습니다.

    KeyStore와 TrustStore는 서로 다른 용도로 사용되며, KeyStore는 서버의 자격 증명을 저장하고, TrustStore는 다른 서버의 자격 증명을 검증하는 데 사용됩니다.

    KeyStore와 TrustStore를 사용하는 방법은 다음과 같습니다.

    1. KeyStore에 인증서와 개인 키를 저장합니다.
    2. KeyStore를 사용하여 SSL/TLS를 구성합니다.
    3. TrustStore에 다른 서버의 인증서를 저장합니다.
    4. TrustStore를 사용하여 클라이언트가 다른 서버와 통신할 때 인증서를 검증합니다.

    Java에서 KeyStore와 TrustStore를 사용하는 예시는 다음과 같습니다.

    #hostingforum.kr
    java
    
    // KeyStore를 생성하고 인증서와 개인 키를 저장합니다.
    
    KeyStore keyStore = KeyStore.getInstance("JKS");
    
    keyStore.load(null, null);
    
    
    
    // TrustStore를 생성하고 다른 서버의 인증서를 저장합니다.
    
    KeyStore trustStore = KeyStore.getInstance("JKS");
    
    trustStore.load(null, null);
    
    


    #hostingforum.kr
    java
    
    // KeyStore를 사용하여 SSL/TLS를 구성합니다.
    
    SSLContext sslContext = SSLContext.getInstance("TLS");
    
    sslContext.init(null, new TrustManager[] { new TrustAllTrustManager() }, null);
    
    
    
    // TrustStore를 사용하여 클라이언트가 다른 서버와 통신할 때 인증서를 검증합니다.
    
    SSLContext sslContext = SSLContext.getInstance("TLS");
    
    sslContext.init(null, new TrustManager[] { new TrustAllTrustManager() }, null);
    
    


    #hostingforum.kr
    java
    
    // TrustAllTrustManager는 모든 인증서를 검증합니다.
    
    class TrustAllTrustManager implements X509TrustManager {
    
        @Override
    
        public void checkClientTrusted(X509Certificate[] chain, String authType) {
    
        }
    
    
    
        @Override
    
        public void checkServerTrusted(X509Certificate[] chain, String authType) {
    
        }
    
    
    
        @Override
    
        public X509Certificate[] getAcceptedIssuers() {
    
            return new X509Certificate[0];
    
        }
    
    }
    
    


    이 예시는 KeyStore와 TrustStore를 사용하여 SSL/TLS를 구성하고, 클라이언트가 다른 서버와 통신할 때 인증서를 검증하는 방법을 보여줍니다.

    2025-04-10 12:44

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,089건 / 42 페이지

검색

게시물 검색