상호 인증을 통해 나머지 클라이언트와 서버를 작성하고 있습니다. 클라이언트 측의 키스트 아는, 키스트 아와 트러스트 스토어로서 기능합니다. 서버 측의 키 스토어는, 키스트 아와 트러스트 스토어로서 기능합니다.만료 된 자체 서명 된 인증서를 수락하는 Tomcat 서버 및 HTTP 클라이언트
서버는 스프링 부트로 시작된 임베디드 Tomcat 서버입니다.
두 가지 테스트 중 하나는 서버가 만료 된 인증서가있는 클라이언트 연결을 거부하고 다른 하나는 만료 된 인증서가있는 서버에 클라이언트가 연결되지 않았 음을 확인하는 테스트입니다.
javatool을 사용하여 만든 truststore 및 키 저장소가 있습니다. 각각에는 각각 자체 서명 된 인증서와 관련 키가 들어 있습니다.
테스트 1
클라이언트 (서버의 키 스토어) 만료 된 인증서와 관련된 (클라이언트 키 저장소에서) 만료 된 키가 있습니다.
내 클라이언트가 서버에 요청하면 서버는 요청을 거부하는 대신 요청을 성공적으로 처리합니다. 서버는 요청을 거부해야합니다.
이 속성을 사용하여 tomcat의 신뢰 저장소를 구성하고 있습니다. 내가 놓친 게 있니?
server.ssl.trust-store={truststore location}
server.ssl.trust-store-password={password}
server.ssl.trust-alias={trust alias}
server.ssl.client_auth=NEED
테스트 2
서버 (클라이언트의 키 스토어) 만료 된 인증서와 관련된 (서버 키 저장소에서) 만료 된 키가 있습니다.
내 클라이언트 (Apache HTTP 클라이언트)가 서버에 요청을 보내면 요청이 성공한 것입니다. 이것은 잘못된 행동입니다. 문제점을 수정 한 SSL 컨텍스트 용 TrustStrategy를 새로 작성했습니다.
return new TrustStrategy() {
/**
* Checks to see if certificate has not expired yet.
*
* Always returns false so the trust manager is consulted.
*/
@Override
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException
{
for (X509Certificate certificate : chain)
{
certificate.checkValidity();
}
return false;
}
};
만료 된 인증서를 거부하는 것이 기본 동작이 아니어야합니까? Embedded Tomcat의 인증서 트러스트 관리자 란 무엇이며 만료 된 인증서를 거부하도록 어떻게 수정합니까?
감사합니다.
봄 부팅 1.4.0, 임베디드 톰캣 7.0.70을 사용하여, 아파치 HTTP 클라이언트 4.3.6