본문으로 건너뛰기
buybitcoinsmart

용어집 / 개발자 참고 자료

중간 인증서

중간 인증서란 무엇입니까?
중간 인증서는 루트 인증서와 리프 인증서 사이에 위치하며, 루트 인증서가 이 인증서에 서명하고 이 인증서가 리프 인증서에 서명합니다. 따라서 루트 인증서의 개인 키는 오프라인에 보관되어 사용되지 않을 수 있습니다.

인증 기관은 웹사이트의 인증서에 루트 키로 서명하지 않습니다. 대신 중간 인증서에 서명하고 루트 키를 오프라인에 보관한 뒤 중간 인증서로 인증서를 발급합니다. 중간 인증서는 루트 인증서가 사는 20년이 아니라 몇 주 안에 교체할 수 있습니다. 서버가 중간 인증서를 보내는 것을 잊으면 브라우저는 그 공백을 덮어 주지만 더 엄격한 클라이언트는 그렇게 하지 않습니다. 그래서 어떤 사이트는 Chrome에서는 정상으로 보이지만 앱에서는 실패할 수 있습니다.

작동 방식

중간 인증서는 신뢰 앵커가 아닌 인증 기관 인증서입니다. CA를 true로 설정한 basicConstraints 확장을 포함하여 추가 인증서에 서명할 수 있으며, 그 자체는 루트 인증서나 다른 중간 인증서의 서명을 받습니다. 검증은 서버의 인증서에서 위로 올라가며, 각 서명을 그 위 인증서에 담긴 키와 대조하고, 로컬 신뢰 저장소에 이미 있는 무언가에 도달하면 멈춥니다.

발급을 이렇게 나누면 세 가지를 얻습니다. 루트 키는 스크립트로 진행되고 입회인이 지켜보는 의식 때만 꺼내는 오프라인 모듈에 남습니다. 피해가 제한되는데, 침해된 중간 인증서는 어떤 기기의 루트 저장소도 건드리지 않고 폐기하고 다시 발급할 수 있기 때문입니다. 그리고 인증 기관은 제품 라인을 분리할 수 있어, 저렴한 자동화 등급의 문제가 감사를 받은 등급에까지 미치지 않습니다.

교차 서명은 새 인증 기관을 아예 쓸 수 있게 만드는 방법입니다. 중간 키 1개가 인증서 2개를 가질 수 있습니다. 하나는 자체 조직의 루트 인증서가 서명하고, 다른 하나는 오래된 기기에 이미 설치되어 있는 기존 루트 인증서가 서명합니다. Let's Encrypt는 수년간 이것에 의존했는데, 업데이트를 더 이상 받지 않는 Android 버전에 ISRG Root X1이 없었기 때문에 IdenTrust가 교차 서명한 체인을 제공했습니다. 이 임시방편은 그 뒤의 루트 인증서보다 오래 살아남았고, 그 루트 인증서는 2021년 9월 30일에 만료되었으며, Let's Encrypt는 마침내 2024년 6월 6일에 교차 서명 체인 제공을 중단했습니다.

체인 구성은 운영자들이 틀리는 부분입니다. 서버는 자신의 인증서와 그 위의 모든 중간 인증서를 보내야 하며, 클라이언트가 이미 가진 루트 인증서 직전에서 멈춥니다. 브라우저는 인증 기관 정보 접근 확장의 URL에서 빠진 부분을 가져오거나 캐시된 사본을 재사용하여 누락을 숨깁니다. 결제 라이브러리, 모바일 앱, 명령줄 클라이언트는 보통 둘 다 하지 않고 신뢰할 수 없는 체인이라고만 보고합니다.

확인할 수 있는 곳

BIP70은 결제 메시지 자체에 중간 인증서를 담아 보냈습니다. pki_data 필드는 X509Certificates 구조를 담았고, 그 첫 항목은 판매자의 인증서였으며, 그 뒤에 루트 인증서에 도달하는 데 필요한 중간 인증서가 따랐습니다. 루트 인증서는 지갑이 이미 가지고 있을 것으로 예상되었기 때문에 생략되었습니다. 이는 TLS 서버가 보내는 순서와 정확히 같으며, 프로토콜 버퍼로 옮겨진 것입니다.

비트코인 밖에서는 어떤 연결이 한 프로그램에서는 성공하고 다른 프로그램에서는 실패할 때마다 중간 인증서가 드러납니다. 웹사이트는 정상적으로 로드되는데 API 엔드포인트가 거래 스크립트에 인증서 오류를 내는 거래소는 거의 항상 체인에서 중간 인증서를 빠뜨린 것입니다. 브라우저의 자동 복구를 수행하지 않는 도구로 테스트하는 것이 봇보다 먼저 이를 발견하는 방법입니다.

중간 인증서 vs 루트 인증서

루트 인증서와 중간 인증서는 모두 인증 기관 인증서이며, 차이는 누가 서명했는지와 키가 어디에 있는지입니다. 루트 인증서는 자체 서명되며 공급업체의 포함 목록에서 권한을 얻습니다. 중간 인증서는 그 위의 서명에서 권한을 얻으므로, 발급 기관이 어디에도 소프트웨어 업데이트 없이 반나절 만에 이를 폐기할 수 있습니다. 일상 운영에서는 중간 인증서가 서명의 거의 전부를 하고 루트 인증서는 거의 하지 않으며, 이 비대칭이 이 계층이 존재하는 이유 전부입니다.

혼동하기 쉬운 용어

자주 묻는 질문

웹사이트는 브라우저에서는 로드되지만 앱이나 스크립트에서는 실패하는 이유는 무엇입니까?

보통 중간 인증서가 빠져 있기 때문입니다. 브라우저는 인증 기관 정보 접근 확장을 사용해 없는 인증서를 조용히 가져오지만, 대부분의 라이브러리와 명령줄 클라이언트는 그렇게 하지 않습니다. 그래서 같은 서버가 한 곳에서는 신뢰할 수 있는 것으로, 다른 곳에서는 신뢰할 수 없는 것으로 보입니다.

중간 인증서를 폐기할 수 있습니까?

예, 그리고 그것이 이 계층이 존재하는 주된 이유입니다. 발급 기관은 중간 인증서를 즉시 폐기할 수 있지만, 침해된 루트 인증서를 제거하려면 루트 저장소를 포함하여 배포되는 모든 기기에 소프트웨어 업데이트가 필요합니다.

관련 용어

개발자 참고 자료 분야의 다른 용어

이 페이지를 영어로 읽기