2017-01-29 1 views
1

루트 CA 인증서와 서버 인증서 사이에 중간 인증서가있는 서버의 SSL 인증서를 확인하고 싶습니다.파이썬에서 루트 인증서없이 SSL 인증서를 확인하는 방법은 무엇입니까?

인증서를 확인하기 위해 '요청'및 'httplib'패키지를 시도한 경우 루트 인증서에 경로를 제공하거나 ('요청의 경우'REQUESTS_CA_BUNDLE '환경 변수를 업데이트하면) 모두 성공합니다.

그러나 서버 인증서 나 중간 인증서 경로 만 제공하면 확인이 실패합니다. 나는 '요청'또는 'httplib'또는 Python의 다른 패키지가 루트 CA 인증서로 다시 추적하지 않고 서버 또는 중간 CA 인증서 만 사용하여 SSL 인증서를 성공적으로 확인할 수있는 방법이 있는지 궁금합니다.

파이썬에서 까다 롭다면 openssl이나 비슷한 리눅스 도구가 같은 것을 허용합니까?

답변

2

파이썬에서 루트 인증서없이 SSL 인증서를 확인하는 방법은 무엇입니까?

인증서 체인을 확인하기 위해 루트 CA 대신 하위 CA 중 하나를 사용할 수 있습니다. 이를 경로 구축이라고하며 RFC that covers the technique이 있습니다.

end-entity 서버 인증서를 직접 사용할 수도 있습니다. 루트 CA 또는 종속 CA가 아니라 신뢰를 얻으십시오.

루트 CA 또는 종속 CA를 사용할 수없는 경우 다른 구성표로 이동해야합니다.


이 귀하의 질문에 직접 ... 당신이 할 수있는 한 가지 pin the host's public key입니다 답변, 전체 PKI 또는 PKIX 기계를 포기하지 않습니다.

key distribution problem이 여전히 적용되며 사이드 스텝을 수행 할 방법이 없습니다. PKIX에서는 CA의 루트 인증서가 필요합니다. 고정 할 때 호스트의 공개 키를 알아야합니다.

예전에 호스트의 공개 키를 알고 있지 않다면 Trust On First Use 스키마로 이동할 수 있습니다. 도구가 CertPatrol과 같은 방식과 비슷합니다.

고정은 엔터프라이즈 응용 프로그램에 적합합니다. 기업에서 조직은 자체 인증서를 발행하므로 공개 키가 무엇인지 알고 있습니다. 심지어 자체 PKI를 실행할 수도 있습니다. 조직은 정보 을 사전에 알고 있기 때문에에 필요한 인증서를 묶어서 앱을 구축합니다. 첫 번째 사용을 신뢰할 필요가 없습니다.

중요한 메모 중 하나 ... RFC 7469, Public Key Pinning Extension for HTTP은 심각한 결함이 있습니다. 가장 피해를주는 것은 (1) 공격자가 알려진 좋은 핀셋을 깰 수있는 오버라이드, (2) 핀셋이 손상되면 오류보고가 비활성화됩니다. RFC는 보안 고려 사항을 나열하는 데 좋은 업무를 수행하지 않았습니다.

Peter Gutmann의 Engineering Security도 참조하십시오. 그는이 모든 것을 다룹니다.


'요청'도 'HTTPLIB'패키지를 시도하는 경우 ...

불행히도, 나는 당신이 어떤 일을해야하는지 잘 모릅니다. 사용할 수있는 라이브러리가 없을 수 있습니다.

+0

내가 거의 지식이 없기 때문에 내가 언급 한 많은 것들이 있기 때문에 대답을 답으로 받아 들일 수 없다. 그래서 나는 당신의 제안을 시험해보기까지 약간의 시간이 걸릴 것이다. 그러나 나는 확실히 모든 중요한 포인터에 대해 당신의 대답을지지합니다. 고마워요 :) – akash12300

+2

@ akash12300 - 그것에 대해 걱정하지 마십시오. 당신은 심층적 인 보안 공학 문제에 직면 해 있습니다. Gutmann의 책을 읽으십시오. 그리고 응답을 너무 빨리 받아들이지 마십시오. 사람들이 응답 할 시간을 허용하십시오. 더 나은 것을 발견 할 수 있습니다. – jww

관련 문제