Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mkchain — 오픈 소스 도구로, 유효한 SSL 인증서 체인을 구축하는 데 도움을 줍니다. | Kitploit
도구/GitHubGitHub/trimstray/mkchain
Encryption/Decryption ToolsCryptographyUtilities & Frameworks
GitHubtrimstray/mkchain

mkchain

오픈 소스 도구로, 유효한 SSL 인증서 체인을 구축하는 데 도움을 줍니다.

저장소 보기
381521년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

mkchain

유효한 SSL 인증서 체인을 구축하는 데 도움을 주는 오픈 소스 도구.

Travis-CI Version License

설명 • 사용 방법 • 매개변수 • 작동 방식 • 요구 사항 • 기타 • 라이선스


Master

설명

유효한 SSL 인증서 체인을 구축하는 데 도움을 주는 오픈 소스 도구입니다. 또한 불완전한 체인을 수정하고 누락된 모든 CA 인증서를 다운로드하는 데 도움을 줄 수 있습니다. 원격 서버에서 모든 인증서를 다운로드하고 인증서 체인을 올바르게 구성할 수도 있습니다.

사용 방법

간단합니다:

root@kitploit:~
# 이 저장소 복제
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에 위치

매개변수

다음 옵션을 제공합니다:

root@kitploit:~
  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 명령 결과):

root@kitploit:~
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가 발급

시나리오 1

이 시나리오에서는 제공된 모든 인증서를 연결합니다. 도구 실행 예시:

Master

시나리오 2

이 시나리오에서는 서버 인증서만 사용하여 나머지 필요한 인증서를 검색합니다. 그런 다음 위와 같이 제공된 모든 인증서를 결합합니다. 도구 실행 예시:

Master

인증서 체인

올바른 체인을 생성하려면 필요한 모든 인증서를 도구에 제공해야 합니다 (-i|--in 매개변수에 디렉토리를 설정한 경우). 인증서는 다음과 같습니다:

  • 서버 인증서
  • 중간 CA 및 루트 CA

이는 매우 중요합니다. 그렇지 않으면 체인의 시작과 끝을 결정할 수 없습니다.

-i|--in 값으로 인증서 파일만 설정하면 mkchain이 필요한 모든 인증서를 자동으로 다운로드합니다.

그러나 mkchain으로 생성된 체인 내부를 살펴보면 루트 인증서가 없습니다.

왜일까요? 자체 서명된 루트 인증서는 웹 서버 구성에 포함될 필요가 없으며 포함하지 말아야 합니다. 이는 아무런 목적도 없고 (클라이언트는 항상 무시합니다) SSL 핸드셰이크 크기를 증가시켜 약간의 성능(지연 시간) 저하를 초래합니다.

인증서 체인에 루트 인증서를 추가하려면 --with-root 매개변수와 함께 유틸리티를 호출하세요.

인증 경로

mkchain은 두 가지 인증 경로를 허용합니다:

Master

출력 설명

인증서 체인 생성 시 mkchain은 인증서에 대한 정보와 오류를 포함한 설명을 표시합니다.

가능한 모든 설명 목록은 다음과 같습니다:

ID (최종 사용자, 서버) 인증서를 찾을 수 없음

이 메시지는 체인의 시작점인 서버 인증서가 없는 경우 표시됩니다. 이 경우 mkchain은 이 정보만 표시하고 작동을 종료합니다. 서버 인증서는 올바른 체인을 생성하는 데 유일하게 필요한 인증서입니다. 이 인증서가 없으면 올바른 체인이 생성되지 않습니다.

올바른 ID (최종 사용자, 서버) 인증서를 찾음

반대 상황 - 유효한 서버 인증서가 발견되면 표시되는 메시지입니다.

첫 번째 중간 인증서를 찾을 수 없음

이 메시지는 두 개의 중간 인증서 중 첫 번째가 발견되지 않을 때 나타납니다. 이 정보는 두 번째 중간 인증서의 부재를 명시적으로 나타내지는 않지만, 서버 인증서가 서명된 중간 인증서가 존재하는지 여부를 판단하는 데 도움을 줍니다. 또한, 두 번째 중간 인증서가 제공된 경우에도 표시될 수 있습니다.

두 번째 중간 인증서를 찾을 수 없음

위와 유사하지만 두 번째 중간 인증서에 관한 것입니다. 그러나 첫 번째 중간 인증서를 사용하고 두 번째를 루트 인증서로 대체하는 등의 두 번째 인증 경로를 사용하여 올바른 체인을 생성할 가능성은 있습니다.

하나 이상의 중간 인증서를 찾을 수 없음

이 메시지는 필요한 중간 인증서 중 하나 또는 모두가 누락되었음을 의미하며, 루트 인증서가 없는 경우 표시됩니다.

'n'개의 올바른 중간 인증서를 찾음

이 메시지는 유효한 중간 인증서의 개수를 나타냅니다.

올바른 루트 인증서를 찾을 수 없음

루트 인증서의 부재는 경고로 처리됩니다. 물론 서버 측에서 인증서를 구성할 때는 루트 인증서를 첨부하지 않는 것이 좋지만, mkchain으로 생성할 경우 체인이 불완전하다고 간주하여 잘못된 체인 생성에 대한 정보를 표시합니다.

인증서 중 하나에서 CN 필드가 비어 있음

이 메시지는 오류가 아니라 CN 필드가 없다는 정보를 제공합니다. 이는 일부 인증서에서 발생할 수 있습니다 (example/google.com 참조). CN(Common Name) 필드는 인증서와 연결된 호스트 이름을 식별합니다. RFC3280에서는 발급자 DN에 CN이 있어야 한다는 요구 사항이 없습니다. 대부분의 CA는 발급자 DN에 CN을 포함하지만, 이 Equifax CA와 같이 포함하지 않는 경우도 있습니다.

요구 사항

mkchain은 실행 전에 설치해야 하는 외부 유틸리티를 사용합니다:

  • OpenSSL (1.1.0g/h에서 테스트)

이 도구는 다음 환경에서 작동합니다:

  • GNU/Linux (Debian 및 CentOS에서 테스트)
  • Bash (4.4.19에서 테스트)

MacOS/FreeBSD:

  • GNU 스타일의 긴 옵션을 지원하는 getopt(1)로 대체 (pkg install getopt)
  • coreutils의 greadlink를 사용하여 MacOS에서도 작동 (homebrew를 통해 설치)

기타

기여하기

**이 문서**를 참조하세요.

프로젝트 아키텍처

**이 문서**를 참조하세요.

라이선스

GPLv3 : http://www.gnu.org/licenses/

무료 소프트웨어, 예!

도구 다운로드