2017-11-08 5 views
1

저는 최근에 하나의 파일을 KeyStore와 TrustStore로 사용하는 Tomcat에서 실행되는 응용 프로그램을 가진 프로젝트에 참여했습니다. 즉, trustedCertEntry 및 PrivateKeyEntry 유형의 항목을 모두 포함합니다. 8.5.20에 톰캣 8.5.6에서 업그레이드하는 동안 TrustedCertEntry 및 PrivateKeyEntry를 JKS에 저장하면 발생합니까?

, 나는 catalina.out 키 스토어에서하는 trustedCertEntry 항목을 제거 할 수 있도록했다 나

java.lang.IllegalArgumentException: java.security.KeyStoreException: Cannot store non-PrivateKeys 

에게 솔루션을 제공 깨달았다.

제게 이것은 분리 된 상태로 유지하는 것이 좋습니다. 내 질문에, 키 스토어 및 트러스트 스토어와 동일한 파일을 사용할 때 발생할 수있는 보안상의 영향은 무엇입니까? 그렇다면 왜 Java (또는 SSL)가 이러한 파일을 동일한 파일에 보관할 수 있습니까?

+0

다른 해결책은 키 저장소 파일의 개인 키와 관련된 tomcat 커넥터 구성에 키 별칭 이름을 제공하는 것입니다. 많은 경우 우리는 특히 프로덕션 환경에서 사용되는 인증서를 제어 할 수 없습니다. – mks

답변

1

SSL과 TLS는 상호 운용 가능한 프로토콜입니다. IETF의 정책과 전통에 따르면 그들은 어느 곳이나 어느 곳에서나 모든 것을 저장하는 것에 대해 아무 말도하지 않습니다. "그건 지역 문제입니다."

자바는 SSL/TLS뿐 아니라 모든 공개 키 암호화 (선택적으로 JCEKS와 함께 일부 대칭 암호화도 포함)에 대해 TrustedCert 및 PrivateKey 모두에 대해 역사적으로 사용되는 하나의 파일 형식 (JKS)이며 Java9는 PKCS12로 전환 중입니다. 양자 모두. 동일한 형식을 사용한다고해도 같은 파일을 사용해야한다는 것은 아니며 별도의 파일을 사용하는 것이 바람직하다고 말합니다.하지만 파일이 포함 된 파일을 보관하는 한 실제 파일이 하나도 사용되지 않습니다. 하나의 시스템으로 제한된 개인 키 또는 절대적으로 필요한 시스템과 적절한 백업 그러나 그것은 프로그래밍 Q가 아니며 보안에 대한 더 나은 답변을 시도 할 수도 있습니다 .SX.

Tomcat 8.5 sorta-kinda는 Java-JSSE 및 APR = OpenSSL 스택에 대해 이전에 분리 된 (종종 혼란스럽게) 다른 구성을 결합합니다.이 제한으로 인해 키 저장소에 PrivateKey 만 포함될 수 있다고 생각합니다.

관련 문제