폐기된 클라이언트가 계속 접속한다: 목록이 도착하지 않았다
폐기는 인증서 검증의 입력이며 세션을 끝내는 명령이 아닙니다. 새 연결과 실행 중인 터널이 목록을 어떻게 보는지 비교해 보십시오.
폐기는 실행 중인 터널 안으로 들어가 세션을 지우지 않습니다. 목록은 인증서 검증의 입력이며 TLS 세션을 시작하는 제어 채널 교환 중에 조회됩니다. 이 한 가지 사실이 두 가지 의문을 설명합니다: 폐기된 클라이언트가 다시 접속하는 것은목록이 검증자에게 도달하지 않았기 때문이고, 기존 세션이 살아남는 것은 아무도 아무것도 다시 검증하지 않았기 때문입니다.
목록은 입력이지 동작이 아니다
세션을 수립할 때 서버는 클라이언트 인증서를 자체 신뢰 앵커와 대조해 검증하고, 폐기 지시문은 그 판단에 목록 조회를 더합니다. 검증은 서버에서 일어나므로 클라이언트는 자기 인증서가 폐기된 것을 볼 수 없고 같은 인증서를 계속 제시합니다. 따라서 여전히 접속하는 프로필은 어딘가의 검증자가 체인을 받아들였다는 것만 증명하며, 폐기가 실패했다는 뜻은 아닙니다.
목록 자체는 발급일과 다음 갱신일이 있는 서명된 객체입니다. 무관한 목록, 다른 기관이 서명한 목록, 다음 갱신일이 지난 목록은 현재 목록을 대신하지 못하며, 오래된 목록을 거부할지 조용히 받아들일지는 배포 방식에 달려 있습니다.
새 연결과 실행 중인 세션
폐기는 세션이 수립되거나 재협상될 때 평가되며, 패킷마다 데이터 채널에 대고 평가하지 않습니다. 이미 연결된 클라이언트는 트래픽 키를 가지고 있으므로 인증서가 목록에 나타난 뒤에도 패킷을 계속 통과시킵니다. 기본 재협상 간격은 시간 단위로 측정되므로, 갱신된 목록이 새로 오는 쪽에는 효력을 내도 실행 중인 터널은 그대로 남습니다.
| Situation | What the list does | When it applies |
|---|---|---|
| Fresh connection | Blocks the handshake | At verification, immediately |
| Renegotiation | Blocks the new exchange | At the next renegotiation interval |
| Established data channel | Nothing | Until the session ends |
즉시 시행에는 목록만이 아니라 의도적인 조치가 필요합니다. 서비스를 다시 시작하면 모든 클라이언트가 재접속을 강요받고, 관리 인터페이스로 한 세션을 종료하면 나머지는 영향을 받지 않습니다. 사건마다 하나를 선택하고 어느 쪽을 썼는지 기록하십시오. 두 선택의 영향 범위가 다르며 그것이 진짜 결정입니다.
검증자가 실제로 읽는 파일을 전달하라
목록은 기관의 기록에서 생성한 뒤 인증서를 검증하는 모든 장비로 복사해야 합니다. CA 호스트에서 생성한 채 서버에 설치하지 않는 것이 가장 흔한 실패이며, 고장 난 폐기 기능처럼 보입니다.
ca ca.crt
cert server.crt
key server.key
crl-verify /etc/openvpn/crl.pem
파일이 실제로 읽히는지는 두 가지 세부에 달려 있습니다. 상대 경로는 설정 디렉터리를 기준으로 해석되므로 운영자의 홈에 남긴 사본은 발견되지 않을 수 있습니다. 또한 데몬은 보통 시작 후 권한을 내려놓으므로 실행 계정에는 각 상위 디렉터리의 검색 권한과 파일의 읽기 권한이 필요합니다. root가 아니라 실행 계정으로 둘 다 확인해야 하며, 그렇지 않으면 시험이 잘못된 것을 증명합니다.
systemd 호스트에서는 강화된 유닛이 읽기 전용 보기나 보호된 시스템 디렉터리로 경로를 숨길 수도 있습니다. 서비스 내부에서는 파일이 없는 것과 구별할 수 없으므로 권한 오류를 찾기 전에 유닛의 제약을 확인하십시오. 파일 모드를 탓하기 전에 유닛 파일을 읽으십시오.
클라이언트가 아니라 서버에서 확인하라
서버 로그는 무슨 일이 있었는지, 즉 목록을 열었는지, 불러왔는지, 아니면 폐기된 일련번호로 검증이 실패했는지를 밝힙니다. 클라이언트는 일반적인 핸드셰이크 실패만 보고하므로 폐기 판단을 찾기에 클라이언트 로그는 나쁜 장소입니다.
폐기된 프로필에서 새 시도로 확인한 뒤 멈추십시오. 그 프로필에서의 성공적인 연결은 파일 경로와 실행 계정을 살펴보라는 신호이며, 목록이 틀렸다고 가정하라는 뜻이 아닙니다. 그 성공한 시도를 인수 시험으로 남기고, 보지 않은 재연결은 세지 마십시오.
무엇도 폐기하지 않는 것
노트북에서 프로필을 지우거나, 클라이언트에서 인증서 파일을 제거하거나, 사용자에게 접속을 그만두라고 말하는 것은 서버에서 아무것도 바꾸지 않습니다. 기관이 폐기를 기록하고 검증자가 결과 목록을 읽을 때까지 인증서는 유효합니다.
그래서 사슬을 적어 둘 가치가 있습니다: 폐기를 기록하고, 목록을 생성해 서명하고, 정확히 그 파일을 배포하고, 서비스 계정이 그것을 읽을 수 있는지 확인하십시오. 각 고리는 짧고, 하나라도 빠지면 폐기된 클라이언트가 태연히 접속합니다. 네 줄짜리 점검 목록이 한 줄도 없는 가정을 이깁니다.