2017-09-19 2 views
0

인증서를 붙여서 체인을 생성하는이 서비스 https://whatsmychaincert.com/을 발견했습니다.OpenSSL 인증서 체인 생성

OpenSSL을 사용하여 체인을 생성 할 수있는 방법이 있습니까?

는 내가이 명령 발견 한 모든 인증서 체인을 보여

openssl s_client -connect example.com:443 -showcerts 

,하지만 인증서가 이미 온라인해야합니다.

로컬 파일 인증서로 체인을 생성 할 수있는 방법이 있습니까?

+0

스택 오버플로는 프로그래밍 및 개발 관련 질문에 대한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww

답변

2

s_client -showcerts은 서버에 의해 제공된 체인 을 보여줍니다. 이 이어야하며 루트는 선택적으로 루트가 될 수는 있지만 웹 사이트에 따라 일부 서버가 올바르게 구성되어 있지 않다고되어 있습니다.

mkcertchain는 SSL 인증서에 대한 중간 인증서 의 체인을 구축하기위한 유틸리티입니다 하나는 예상대로 "이 연구는 않는 방법"작동 방법을 설명 그것은 또한 링크가 있습니다. 인증서의 "CA Issuers"필드에 지정된 URL 에서 체인 인증서를 다운로드합니다. 이 모든 주요 브라우저에서 신뢰할 수있는 루트 인증서를 발견 할 때까지 반복적으로 다운로드됩니다. 인증서 체인이 여러 개 발견되면 가장 짧은 인증서 체인이 사용됩니다. (예 : 아마도 데이터베이스 쿼리 등) 일부 프로그램에 의해 시작 파일에 인증서 또는 출력 가능한 감안할 때

, PEM 또는 'DER'(바이너리) 형식으로, 하나의 openssl x509 -text [-inform pem|der] 출력 CA '를 포함하여 인증서 데이터를 모두 발행자 '. awk, perl, grep, bash 나 PowerShell 같은 셸과 같은 텍스트 처리 프로그램은 그 라인과 그 값을 추출 할 수 있어야하고, 일반적으로 http :이므로 curl과 같은 HTTP 요청 프로그램 wget은 cert를 가져올 수 있습니다. perl, shell 또는 PowerShell과 같은 스크립팅 언어는 Subject와 Issuer를 비교하여 루트에 도달 할 때 필요에 따라이 프로세스를 반복 할 수 있습니다. 좀 더 복잡한 루트가 아닌 앵커에서 멈추고 싶지만, 현재 주요 브라우저에서 이러한 앵커가 허용되지 않는다고 생각하면 받아 들여질 체인을 만드는 데 필요하지 않습니다. 브라우저별로.

FWIW, 당신의 인증서 표시 할 경우에도하지이 AIA의 CA 발행자 필드, 지금 가장 https://crt.sh에서 쉽게 검색 할 수있는 인증서 투명성 로그에 의해 캡처 된 중간체를 포함하여 공공의 CA; 링크를 클릭하여 체인을 쉽게 탐색 할 수 있으므로 자동화하려고 생각하지 않았습니다. 웹 사이트와 상호 작용하기 위해 웹 브라우저를 '움직이거나'시뮬레이트하는 수많은 도구가 여기에서 작동 할 수도 있습니다.

물론 인증서를 발급 한 CA는 항상에 필요한 체인 인증서를 제공 할 수 있어야합니다. 그것은 그들의 일의 일부입니다.