Windows Server 2019에서 실행되는 Microsoft 인증 기관이 있습니다. MDM을 통해 Android 장치에 인증서를 발급하고 있습니다. Android 장치 사용자는 클라이언트 인증서가 필요한 Chrome 웹 브라우저(Android의 경우)를 사용하여 웹 애플리케이션(Apache에서 호스팅되고 PHP 8로 구현됨)을 탐색합니다.
Apache 웹 서버에 제공된 클라이언트 인증서가 유효한지 검증/검증하기 위해 Microsoft OCSP 응답자 역할이 포함된 별도의 Windows Server 2019 인스턴스를 설치하고 있습니다. Apache에는 OCSP 유효성 검사를 처리하기 위한 몇 가지 지시문이 있습니다. 또한 보안을 강화하기 위해 PHP에서 인증서의 유효성을 검사하고 싶습니다.
여러 RFC 및 Microsoft 기술 문서를 읽은 내 연구에 따르면 Microsoft OCSP 응답자는 해지 상태에 대해 CRL을 참조하여 인증서의 유효성을 검사하는 것 같습니다.
인증서가 해지되지 않고 CA에서 삭제된 경우 Microsoft OCSP 응답자는 인증서의 유효성을 어떻게 확인합니까? 삭제하고 취소하지 않으면 CRL에 표시되지 않습니다.
여기서 뭔가 빠졌나요? Microsoft OCSP 응답자는 CA 데이터베이스와 해당 해지 상태에 대해 일련 번호의 유효성을 검사합니까?
답변1
Microsoft OCSP 응답자는 CA 데이터베이스와 해당 해지 상태에 대해 일련 번호의 유효성을 검사합니까?
기본적으로 Microsoft OCSP는 이러한 일련 번호를 "양호"로 보고합니다. Windows Server 2008 R2부터 결정적 OCSP 응답 기능이 Microsoft OCSP에 추가되었습니다. 즉, CA는 발급된 인증서의 모든 일련 번호를 게시하고 OCSP도 이 디렉터리를 조사하도록 구성됩니다. 새로운 동작은 다음을 수행합니다.
- 폴더에 일련 번호가 없으면 OCSP는
UNKNOWN
상태로 응답합니다. 이는 요청한 일련 번호가 CA에서 발급된 적이 없음을 의미합니다. - 폴더에 일련번호가 있으면 CRL을 확인합니다.
- 일련번호가 CRL에 나열되어 있으면
REVOKED
상태로 응답하고GOOD
그렇지 않으면 응답합니다.
Microsoft KB에 대한 자세한 내용:온라인 응답자 서비스는 CRL에 포함되지 않은 모든 인증서에 대해 결정적 GOOD를 반환하지 않습니다.
KB에는 발급된 인증서의 모든 일련 번호를 구성된 폴더에 덤프하는 스크립트가 포함되어 있습니다. 그러나 스크립트에 약간 결함이 있습니다. 스크립트 실행 시 CA 데이터베이스에 존재하는 일련번호만 내보냅니다. CA 데이터베이스가 유지 관리되고 CA 데이터베이스가 과도하게 증가하는 것을 방지하기 위해 오래된 항목이 삭제됩니다. 이로 인해 UNKNOWN
인증서가 발급되어 어딘가에 존재하더라도 삭제된 인증서에 대한 거짓 긍정 상태가 발생합니다 . CA 유지 관리와 관계없이 발행된 모든 것을 유지하고 GOOD
CA에서 인증서가 삭제된 경우에도 응답하는 것을 선호합니다 . 이 결함을 해결하려면 스크립트에서 다음 줄을 제거하는 것이 좋습니다.
dir | foreach {
remove-item $_ -force
}
이렇게 하면 스크립트 실행 사이에 CA에 더 이상 존재하지 않는 일련 번호가 유지됩니다.