JKS files

JKS files (JKS 파일)

TLS와 HTTPS를 구성하는 데 사용하는 Java keystore(JKS) 파일을 검증하는 방법을 설명해요. 서버의 개인 키와 인증서가 keystore 파일에 저장돼요.

출처: 문서

본문

이 토픽은 TLS와 HTTPS를 구성하는 데 사용하는 Java keystore(JKS) 파일을 검증하는 방법을 설명해요.

Java KeyStore(JKS) 시스템은 Java 설치의 일부로 제공돼요. 서버의 개인 키와 인증서는 keystore 파일에 저장돼요. JKS 시스템은 PKCS #12 .p12 파일과 레거시 keystore .jks 파일을 모두 지원해요.

keystore 파일 자체는 항상 비밀번호로 보호돼요. keystore 파일에는 같은 파일에 여러 키가 있을 수 있으며, 각 키는 별칭(alias) 이름으로 구분돼요.

사이트 네트워크 관리팀으로부터 keystore 파일을 받았다면, 아래 설명대로 Trino 클러스터에 대한 올바른 정보를 보여주는지 확인하세요.

keystore 검사 및 검증 (Inspect and validate keystore)

keystore 파일에 Trino 서버에 대한 올바른 정보가 들어 있는지 검사하세요. Java 설치의 일부로 설치된 keytool 명령을 사용해 keystore 파일에서 정보를 가져와요:

keytool -list -v -keystore yourKeystore.jks

keystore는 항상 비밀번호가 필요해요. keytool 명령줄에 제공하지 않으면 keytool이 비밀번호를 물어봐요.

keystore의 비밀번호와 별개로 개별 키가 자체 비밀번호를 가질 수 있어요. 이 비밀번호들을 같게 만들어 두는 것이 가장 쉬워요. keystore 안의 JKS 키가 다른 비밀번호를 가지면 두 번 물어봐요.

keytool -list 명령의 출력에서 다음을 찾아보세요:

  • keystore는 개인 키(Entry type: PrivateKeyEntry) 또는 인증서(Entry type: trustedCertEntry), 또는 둘 다를 포함할 수 있어요.
  • 현대 브라우저는 인증서의 최대 유효 기간으로 398일을 강제해요. Valid from ... until 항목을 찾아 시간 범위가 398일을 초과하지 않는지 확인하세요.
  • 현대 브라우저와 클라이언트는 SubjectAlternativeName(SAN) 필드를 요구해요. 서버의 DNS 이름(예: DNS:cluster.example.com)이 표시되는지 확인하세요. SAN이 없는 인증서는 지원되지 않아요.

예:

SubjectAlternativeName [
    DNSName:  cluster.example.com
]

keystore가 클러스터에 유효한 정보를 보여주면, Place the certificate file과 Configure the coordinator에 설명된 대로 Trino 서버 구성을 진행하세요.

이 페이지의 나머지는 특정 상황에서 적용될 수 있는 추가 단계를 설명해요.

추가: keystore에 PEM 추가 (Extra: add PEM to keystore)

사이트가 모든 서버에 JKS 의미 체계를 표준화했을 수 있어요. 공급업체가 Trino 서버용 PEM 인코딩 인증서 파일을 보냈다면, 다음과 같은 명령으로 keystore에 가져올 수 있어요. 다른 옵션은 keytool 참조를 확인하세요:

keytool -trustcacerts -import -alias cluster -file localhost.pem -keystore localkeys.jks

지정한 keystore 파일이 존재하면 keytool이 그 비밀번호를 물어봐요. 새 keystore를 만드는 경우 keytool이 새 비밀번호를 물은 다음 같은 비밀번호를 확인하라고 요구해요. keytool은 keytool -list 형식과 비슷하게 추가되는 키의 내용을 보여준 다음 물어봐요:

Trust this certificate? [no]:

PEM 인증서를 keystore에 추가하려면 yes를 입력하세요.

별칭 이름은 추가하는 인증서의 핸들로 사용되는 임의의 문자열이에요. keystore는 여러 키와 인증서를 포함할 수 있으므로 keytool은 별칭을 사용해 개별 항목을 구분해요.

추가: Java truststores (Extra: Java truststores)

Note

keystore와 별개로 서명된 PEM 인코딩 인증서를 직접 사용할 때는 지역 truststore를 식별할 필요가 없을 수 있음을 기억하세요. PEM 인증서에는 서버의 개인 키와 인정된 CA까지 거슬러 올라가는 인증서 체인이 모두 포함될 수 있어요.

Truststore 파일에는 Java가 서버의 개인 키를 검증하기 위해 신뢰하는 인증 기관(Certificate Authorities) 목록과 신뢰받는 TLS 서버의 인증서 목록이 들어 있어요. Java에서 제공하는 표준 truststore 파일인 cacerts는 Java 설치의 표준 위치에 있어요.

keystore는 보통 시스템 truststore의 기본 위치에 의존하므로 이를 구성할 필요가 없어요.

하지만 대체 truststore를 사용해야 하는 경우가 있어요. 예를 들어 사이트가 JKS 시스템에 의존한다면 네트워크 관리자가 표준 목록에 사이트 특정 지역 CA를 추가해 지역적으로 서명된 키를 검증했을 수 있어요.

서버가 커스텀 truststore를 사용해야 한다면 서버의 config properties 파일에서 그 위치를 지정하세요. 예:

http-server.https.truststore.path=/mnt/shared/certs/localcacerts
http-server.https.truststore.key=

브라우저나 Trino CLI 같은 연결 클라이언트를 별도로 구성해야 한다면 사이트 네트워크 관리자의 도움을 받으세요.

더 알아보기 (Learn more)

PEM 파일 형식의 검증은 PEM files 문서를 참고해 보세요.