성공적인 HTTPS 연결을 위해 클라이언트 (Java, C ++ 등)에 유효한 디지털 인증서가 필요합니까?

StackOverflow https://stackoverflow.com/questions/1001078

  •  05-07-2019
  •  | 
  •  

문제

서버에 HTTPS를 요청할 작은 독립형 프로그램을 구현할 계획입니다. 클라이언트에 유효한 SSL 인증서가 필요합니까? 이 경우 SSL 핸드 셰이크는 어떻게 작동합니까? 클라이언트에 SSL 인증서가없는 보안 문제가 있습니까?

도움이 되었습니까?

해결책

네트워크 트래픽을 암호화하는 것 외에도 HTTPS는 일반적으로 서버를 인증하는 데 사용됩니다. 즉, 고객에게 서버를 소유 한 사람 등에 대한 정보를 안심시키기 위해서는 클라이언트가 서버에서 게시 한 인증서에서 신뢰 체인을 검사해야합니다. 이를 위해서는 클라이언트 시스템에 서버의 인증서를 발행 한 인증 기관을 설명하는 인증서를 설치해야합니다. 일반적으로 이러한 인증서는 "신뢰할 수있는 루트 인증 당국"이라는 상점에서 컴퓨터에서 발견되며 대부분의 OS에는 이미 설치된 CAS 세트가 있습니다.

또한 많은 웹 서버는 클라이언트가 클라이언트 인증서를 제공하여 클라이언트가 서버에 자체적으로 인증 할 수있는 기능을 제공합니다. 웹 서버는 클라이언트에서 오는 인증서를 검사하여 서버의 일련의 권한에 매핑 할 수 있습니다. 이 "클라이언트 인증"은 작동하는 HTTPS 세션에 필요하지 않지만 옵션 일뿐입니다.

요컨대, 당신은 실제로는 아닙니다 필요 클라이언트의 모든 인증서이지만 아마도 원하다 서버의 신원을 검증하기 위해 루트 CA 인증서를 갖습니다. 해당 인증서가없는 경우 서버를 신뢰하는 것이 불가능하지만 (또 다른 이유가없는 한) 어쨌든 데이터를 교환하도록 선택할 수 있습니다.

다른 팁

HTTPS 핸드 셰이크와 협상 된 내용에 대해 자세히 알아 보려면 Moserware 에서이 훌륭한 글을 보는 것이 좋습니다.

http://www.moserware.com/2009/06/first-fewmilliseconds-of-https.html

서버에 필요한 경우에만 클라이언트 인증서가 필요합니다. 클라이언트 인증서를 사용하면 서버가 클라이언트를 인증 할 수 있지만 서버에 모든 승인 된 클라이언트 목록이있는 경우에만 유용합니다. 일반적으로 웹 서버의 경우에는 해당되지 않으므로 클라이언트 인증서를 요구하는 것은 매우 드 rare니다.

현재 클라이언트 측 인증서는 보안 채널의 설정에 영향을 미치지 않습니다. (서버의 인증서 만 필요하고 클라이언트 인증서를 믹스에 추가하는 것은 프로세스가 변경되지 않습니다.) 보안 채널이 설정되면 서버는 클라이언트 인증서를 사용하여 클라이언트 인증 (일반적으로 클라이언트의 공개를 비교하여 클라이언트 인증서를 사용합니다. 승인 된 클라이언트 목록이있는 키 또는 이름).

HTTPS 연결을 위해 인증서가 필요하지 않지만 의사 소통을하는 사람을 알고 싶을 때 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top