Skip to content
isdnetworks
Go back

지름길 대신 사슬

인증서를 새로 넣고 브라우저에서 사이트가 열리는 것을 보고 정상으로 판정했다. 그런데 일부 환경에서는 발급자를 확인할 수 없다는 오류로 연결이 거부됐다.

Table of contents

Open Table of contents

관대한 도구가 가린 문제

내 브라우저는 중간 인증서를 이미 캐시하고 있어서 서버가 보내지 않아도 연결이 성립했다. 다른 도구로 붙어 보니 신뢰 사슬을 완성하지 못한다는 오류가 났다.

확인하는 도구가 관대하면 문제를 볼 수 없다. 브라우저는 자체 저장소와 캐시를 쓰므로 서버 설정의 결함을 대신 메워 준다.

가운데가 빠진 신뢰 사슬

서버가 실제로 무엇을 보내는지 확인하니 자기 인증서 하나만 제시하고 있었다. 서버 인증서와 중간 인증서와 루트 인증서가 이어져야 하는데 가운데가 없었다.

서버 인증서와 중간 인증서를 이어 붙여 함께 보내도록 고치고 검증 결과 코드가 정상으로 나오는지 확인했다. 그리고 브라우저가 아닌 세 가지 도구로 각각 확인했는데 셋이 서로 다른 인증서 저장소를 보기 때문이다.

중간 인증서의 만료

처음에는 서버 인증서의 만료일만 봤는데 중간 인증서의 만료도 함께 봐야 했다. 중간 인증서가 먼저 만료되면 서버 인증서가 유효해도 연결이 성립하지 않는다.

그래서 두 인증서의 만료일을 나란히 출력하도록 확인 절차에 넣었다. 사슬을 이루는 모든 구성 요소가 검사 대상이 되어야 한다는 점은 만료에도 똑같이 적용된다.

다른 것들도 사슬이다

같은 구조가 여러 곳에 있는데 권한은 사용자와 그룹과 역할과 권한으로 이어지고 자료는 원본과 색인과 캐시와 화면으로 이어진다. 끝만 보면 중간이 끊긴 것을 볼 수 없다.

실제로 권한에서 한 번 걸렸는데 사용자에게 권한이 있고 역할도 살아 있는데 중간의 그룹이 비활성이었다. 각 단계의 상태를 차례로 출력해 주는 확인 스크립트를 만드니 어디서 끊겼는지가 바로 보였다.

갱신 절차에 넣은 시험 단계

인증서 갱신 순서를 정하면서 시험 환경 확인을 운영 적용 앞에 넣었다. 사슬을 만들 때 두 인증서의 순서를 거꾸로 붙여 일부 환경에서 거부된 적이 있었기 때문이다.

서버 인증서가 먼저 오지 않으면 도구에 따라 받아들이지 않으므로 만든 사슬 자체를 검증해야 한다. 만료 삼십 일 전에 알리는 검사도 함께 걸었는데 갱신에는 시간이 걸리므로 여유가 필요하다.

정리


Share this post on:

Previous Post
대체 동작이 기본 로그 수준에 안 보였다
Next Post
살아 있는 것과 받아 주는 것