
오픈 소스 도구로, 유효한 SSL 인증서 체인을 구축하는 데 도움을 줍니다.
설명 • 사용 방법 • 매개변수 • 작동 방식 • 요구 사항 • 기타 • 라이선스
유효한 SSL 인증서 체인을 구축하는 데 도움을 주는 오픈 소스 도구입니다. 또한 불완전한 체인을 수정하고 누락된 모든 CA 인증서를 다운로드하는 데 도움을 줄 수 있습니다. 원격 서버에서 모든 인증서를 다운로드하고 인증서 체인을 올바르게 구성할 수도 있습니다.
간단합니다:
# 이 저장소 복제
git clone https://github.com/trimstray/mkchain
# 저장소 디렉토리로 이동
cd mkchain
# 설치
./setup.sh install
# 앱 실행
mkchain -i /data/certs -o /data/chain.crt
/usr/local/bin에bin/mkchain심볼릭 링크 생성됨- man 페이지는
/usr/local/man/man8에 위치
다음 옵션을 제공합니다:
Usage:
mkchain <option|long-option>
Examples:
mkchain --in Root.crt --in Intermediate1.crt --in Server.crt --out bundle_chain_certs.crt
mkchain --in /tmp/certs --out bundle_chain_certs.crt --with-root
mkchain -i Server.crt -o bundle_chain_certs.crt
mkchain -i https://incomplete-chain.badssl.com/ --with-root
Options:
--help show this message
--debug displays information on the screen (debug mode)
-i, --in add certificates to merge (file, multiple files, directory with ssl certificates
or remote domain)
-o, --out saves the result (chain) to a file
--with-root add root certificate to certificates chain
-o|--out- 이 매개변수가 없으면mkchain은 출력 체인을mkchain/chains/디렉토리에 저장합니다.
읽기 전에 SSL Certificate Chain 문서를 참조하세요.
ssllabs 인증서 체인부터 시작하겠습니다. 이 체인들은 mkchain과 함께 제공되며 example/ssllabs.com 디렉토리에서 찾을 수 있습니다. 이 디렉토리에는 체인 조립에 필요한 모든 인증서가 포함된 all 디렉토리와 서버 인증서만 포함된 server_certificate 디렉토리가 추가로 있습니다.
ssllabs.com 도메인의 올바른 체인 (openssl 명령 결과):
Certificate chain
0 s:/C=US/ST=California/L=Redwood City/O=Qualys, Inc./CN=ssllabs.com
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
2 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/CPS is incorporated by reference/OU=(c) 2006 Entrust, Inc./CN=Entrust Root Certification Authority
위 코드는 다음으로 구성된 전체 체인을 보여줍니다:
ID 인증서 (서버 인증서)
ssllabs.com을 위해 Entrust Certification Authority - L1K가 발급
중간 인증서
Entrust Certification Authority - L1K를 위해 Entrust Root Certification Authority - G2가 발급
중간 인증서
Entrust Root Certification Authority - G2를 위해 Entrust Root Certification Authority가 발급
루트 인증서 (자체 서명 인증서)
Entrust Root Certification Authority를 위해 Entrust Root Certification Authority가 발급
이 시나리오에서는 제공된 모든 인증서를 연결합니다. 도구 실행 예시:
이 시나리오에서는 서버 인증서만 사용하여 나머지 필요한 인증서를 검색합니다. 그런 다음 위와 같이 제공된 모든 인증서를 결합합니다. 도구 실행 예시:
올바른 체인을 생성하려면 필요한 모든 인증서를 도구에 제공해야 합니다 (-i|--in 매개변수에 디렉토리를 설정한 경우). 인증서는 다음과 같습니다:
이는 매우 중요합니다. 그렇지 않으면 체인의 시작과 끝을 결정할 수 없습니다.
-i|--in값으로 인증서 파일만 설정하면mkchain이 필요한 모든 인증서를 자동으로 다운로드합니다.
그러나 mkchain으로 생성된 체인 내부를 살펴보면 루트 인증서가 없습니다.
왜일까요? 자체 서명된 루트 인증서는 웹 서버 구성에 포함될 필요가 없으며 포함하지 말아야 합니다. 이는 아무런 목적도 없고 (클라이언트는 항상 무시합니다) SSL 핸드셰이크 크기를 증가시켜 약간의 성능(지연 시간) 저하를 초래합니다.
인증서 체인에 루트 인증서를 추가하려면 --with-root 매개변수와 함께 유틸리티를 호출하세요.
mkchain은 두 가지 인증 경로를 허용합니다:
인증서 체인 생성 시 mkchain은 인증서에 대한 정보와 오류를 포함한 설명을 표시합니다.
가능한 모든 설명 목록은 다음과 같습니다:
이 메시지는 체인의 시작점인 서버 인증서가 없는 경우 표시됩니다. 이 경우 mkchain은 이 정보만 표시하고 작동을 종료합니다. 서버 인증서는 올바른 체인을 생성하는 데 유일하게 필요한 인증서입니다. 이 인증서가 없으면 올바른 체인이 생성되지 않습니다.
반대 상황 - 유효한 서버 인증서가 발견되면 표시되는 메시지입니다.
이 메시지는 두 개의 중간 인증서 중 첫 번째가 발견되지 않을 때 나타납니다. 이 정보는 두 번째 중간 인증서의 부재를 명시적으로 나타내지는 않지만, 서버 인증서가 서명된 중간 인증서가 존재하는지 여부를 판단하는 데 도움을 줍니다. 또한, 두 번째 중간 인증서가 제공된 경우에도 표시될 수 있습니다.
위와 유사하지만 두 번째 중간 인증서에 관한 것입니다. 그러나 첫 번째 중간 인증서를 사용하고 두 번째를 루트 인증서로 대체하는 등의 두 번째 인증 경로를 사용하여 올바른 체인을 생성할 가능성은 있습니다.
이 메시지는 필요한 중간 인증서 중 하나 또는 모두가 누락되었음을 의미하며, 루트 인증서가 없는 경우 표시됩니다.
이 메시지는 유효한 중간 인증서의 개수를 나타냅니다.
루트 인증서의 부재는 경고로 처리됩니다. 물론 서버 측에서 인증서를 구성할 때는 루트 인증서를 첨부하지 않는 것이 좋지만, mkchain으로 생성할 경우 체인이 불완전하다고 간주하여 잘못된 체인 생성에 대한 정보를 표시합니다.
이 메시지는 오류가 아니라 CN 필드가 없다는 정보를 제공합니다. 이는 일부 인증서에서 발생할 수 있습니다 (example/google.com 참조). CN(Common Name) 필드는 인증서와 연결된 호스트 이름을 식별합니다. RFC3280에서는 발급자 DN에 CN이 있어야 한다는 요구 사항이 없습니다. 대부분의 CA는 발급자 DN에 CN을 포함하지만, 이 Equifax CA와 같이 포함하지 않는 경우도 있습니다.
mkchain은 실행 전에 설치해야 하는 외부 유틸리티를 사용합니다:
이 도구는 다음 환경에서 작동합니다:
MacOS/FreeBSD:
pkg install getopt)greadlink를 사용하여 MacOS에서도 작동 (homebrew를 통해 설치)**이 문서**를 참조하세요.
**이 문서**를 참조하세요.
GPLv3 : http://www.gnu.org/licenses/
무료 소프트웨어, 예!