VPN 클라이언트는 제거되었고 프로필은 설정에서 사라졌는데도 터널은 여전히 예전 자격 증명으로 올라옵니다. 아니면 삭제하고 재부팅했는데 다음 날 아침 다시 나타납니다. 둘 다 고장 난 삭제 버튼은 아닙니다. 프로필은 구성이고, 인증서는 키 자료에 더해 프로필이 가리키기만 하는 저장소에 기록된 신뢰 결정입니다. 둘 중 무엇을 쥐고 있는지가 '제거'가 무엇을 뜻해야 하는지를 결정합니다.

프로필은 인증서가 아니다

VPN 설정에서는 서로 다른 세 가지 개체를 '인증서'라고 부릅니다. 클라이언트 ID는 개인 키가 있는 리프 인증서이며, 게이트웨이는 그것으로 당신이 누구인지 판단합니다. 서버 자체의 리프와 중간 인증서는 클라이언트가 연결할 때 확인하는 것입니다. 신뢰 앵커는 보통 루트 또는 사설 CA 인증서이며, 체인을 애초에 검증 가능하게 만드는 것입니다. RFC 5280 이는 이것들을 신뢰 앵커, 중간 인증서, 최종 엔터티라고 부르며, 체인은 각 링크가 그 아래를 서명하는 동안에만 유효합니다.

ID를 삭제하면 기기 하나가 접근을 잃습니다. 앵커를 삭제하면 그 저장소에 대해 검증하는 모든 애플리케이션이 그 아래에서 발급된 무엇이든 확인할 능력을 잃습니다, VPN과 아무 관계없는 연결까지 포함해서요. 이 비대칭성이 여기서의 위험 전부입니다. 한 게이트웨이를 위해 설치한 루트는 흔히 내부 포털, 메일 서버, 패키지 미러를 서명하는 같은 루트입니다. 둘 중 무엇을 쥐고 있는지 기억하세요.

소유권이 삭제가 삭제된 채로 남을지를 결정합니다. 당신이 소유한 노트북에서는 당신만이 인증서를 되돌려 놓을 수 있습니다. 관리되는 기기에서는 구성 프로필이나 MDM 페이로드가 다음 체크인 때 다시 설치할 수 있고, 그래서 '돌아오는' 것이며 더 세게 삭제해도 소용없는 이유입니다.

어느 저장소가 아직 그것을 보관하는지 찾으세요

사람들은 설정 앱에서 시작하지만, 그곳은 인증서가 저장되지 않는 유일한 장소입니다. 실제 위치는 OS의 신뢰 저장소, 브라우저 자체 저장소, 애플리케이션의 사설 저장소입니다.

StoreWhat deleting from it affects
Windows CurrentUser\Myyour login session only
Windows LocalMachine Rootevery user and service on the machine
macOS login or System keychainone account, or all of them with sudo
Linux ca-certificates bundlecurl, git, Python, anything using the system bundle
Firefox cert9.dbFirefox only; it does not read the OS store

일련번호나 지문으로 일치시키고, 표시 이름으로는 절대 하지 마세요. 표시 이름은 인증서를 발급한 사람이 정하며 재사용됩니다. 'Example VPN'은 서로 다른 키를 가진 세 개의 인증서일 수 있고, 그중 하나는 여전히 매일 쓰입니다.

certutil -user -store My
certutil -store Root
openssl x509 -in vpn-client.pem -noout -subject -issuer -serial -fingerprint -sha256

macOS에서는 security 도구가 같은 사실을 보여 주며, find-identity 아직 개인 키가 붙어 있는 인증서를 표시합니다:

security find-certificate -a -c "Example VPN" -Z /Library/Keychains/System.keychain
security find-identity -v -p ssl-client

좁은 개체를 삭제하고 공유 발급자는 남기세요

삭제하기 전에 내보내세요. 백업이 없으면 유일한 복구는 재발급입니다. 사설 CA에서는 PKI를 운영하는 사람에게 돌아가야 한다는 뜻입니다. 내보낸 PFX는 제거가 잘못된 결정으로 밝혀질 때 넘겨줄 물건이기도 합니다.

certutil -user -exportPFX -p backup My <serial> C:\temp\vpn-id.pfx
certutil -user -delstore My <serial>
Remove-Item Cert:\CurrentUser\My<thumbprint>

이 -user 플래그는 사람들이 실수로 빠뜨리는 것입니다. 그것이 없으면 certutil은 머신 저장소에서 동작하며, 이는 상승된 셸, 다른 인증서 집합, 그리고 이제 머신의 다른 모든 계정을 포함하는 영향 범위를 뜻합니다.

macOS와 Linux에서는 형태가 같으며, 식별하고, 내보내고, 증상을 설명하는 가장 좁은 저장소에서 제거하세요. /usr/local/share/ca-certificates 아래의 파일을 제거하고 update-ca-certificates 를 다시 실행하면 충분합니다. --fresh 는 /etc/ssl/certs 의 심볼릭 링크가 이미 일관되지 않을 때만 도움이 됩니다. RHEL 계열 시스템은 앵커를 /etc/pki/ca-trust/source/anchors에 두며, 그곳에서 trust anchor --remove 가 같은 일을 합니다.

sudo security delete-certificate -Z <sha1> /Library/Keychains/System.keychain
sudo rm /usr/local/share/ca-certificates/example-vpn.crt
sudo update-ca-certificates
sudo trust anchor --remove /etc/pki/ca-trust/source/anchors/example-vpn.crt

CA 인증서를 삭제하기 전에 그것에 무엇이 더 연결되는지 확인하세요. 번들 안의 주체를 나열하는 것은 두 줄짜리 점검이며, 그 앵커가 다른 일을 하는지 답해 줍니다:

openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
  | openssl pkcs7 -print_certs -noout | grep -i example

파일 삭제는 ID 폐기가 아닙니다

로컬 삭제는 복사본 하나를 없앱니다. 개인 키는 예전 티켓에 첨부된 p12, 백업 폴더, 또는 동시에 설정한 두 번째 노트북에 남아 있을 수 있습니다. 이것이 클라이언트 ID였다면, 게이트웨이는 ID가 서버 측에서 거부될 때까지 그 키의 어떤 복사본이든 계속 받아들입니다.

하나의 OpenVPN PKI에서는 인증서를 폐기하고 crl-verify 가 참조하는 CRL이 최신인지 확인하는 것을 뜻하며, easyrsa revoke 그다음 easyrsa gen-crl 이 짧은 버전입니다. ID 공급자에 묶인 게이트웨이라면 거기서 사용자를 비활성화하거나 기기를 제거하세요. 인증서는 게임에 있는 자격 증명 중 하나일 뿐입니다. 계정이 활성인 채로 로컬 복사본을 삭제하는 것은 정리처럼 보이지만 정리가 아닙니다.

사고 작업은 순서가 다릅니다. 먼저 인증서, 일련번호, 폐기 기록을 보존하고, 그다음 삭제하고 폐기하세요. 그 기록은 비용이 들지 않고 작동하는 자격 증명을 남겨 둘 필요도 없습니다.

핸드셰이크와 두 번째 앱으로 확인하세요

체인은 방금 편집한 저장소 목록이 아니라 바깥에서 확인하세요. 저장소는 당신의 편집을 보여 주고, 핸드셰이크는 결과를 보여 줍니다.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com \
  -CAfile /etc/ssl/certs/ca-certificates.crt -verify_return_error < /dev/null
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt vpn-gateway.pem

반환 코드 0은 남은 앵커가 여전히 게이트웨이를 검증한다는 뜻입니다. 앵커 제거 후의 체인 오류는 예상된 결과이며, 사용 중인 앵커를 맞혔지 클라이언트가 절대 읽지 않는 저장소의 중복을 맞히지 않았다는 것을 확인해 줍니다. 연결이 여전히 작동한다면 두 번째 복사본, 앱에 내장된 저장소, 또는 고정된 인증서를 찾으세요. 모두 자체 신뢰 목록을 가져오는 클라이언트에서 흔합니다.

그다음 무관한 것을 시험하세요. 내부 사이트, 메일 클라이언트, 패키지 미러입니다. 변경 창이 닫히기 전에 영향 범위를 저렴하게 측정합니다.

  • 역할이 ID, 중간 인증서 또는 신뢰 앵커로 식별됨
  • 일련번호와 지문이 기록되고 복사본이 승인된 위치로 내보내짐
  • 증상을 설명하는 가장 좁은 범위에서 삭제 수행
  • 사람이나 기기가 떠날 때 서버 측 권한이 폐기됨
  • 핸드셰이크가 설명되고 무관한 앱 하나가 다시 시험됨
  • MDM 페이로드 또는 관리 프로필이 업데이트됨, 그렇지 않으면 인증서가 돌아옴

재부팅 후 인증서가 돌아왔다면 작업이 끝난 것이 아닙니다. 무언가가 그것을 소유하고 다시 설치합니다. 다시 삭제하기 전에 그 소유자를 찾으세요. 세 번째 삭제도 처음 두 번과 똑같이 행동할 것입니다.

관련 글