CERTUTIL을 사용하여 PFX를 가져올 수 없습니다. - "키 세트가 존재하지 않습니다."

CERTUTIL을 사용하여 PFX를 가져올 수 없습니다. - "키 세트가 존재하지 않습니다."

다른 Windows 시스템(Server 2008 R2, 7, 8)에서 사용할 때 제대로 설치되는 PFX 파일이 있습니다. 내 서버 중 2개에서 다음과 같이 가져오기가 실패합니다.

CertUtil: -importPFX command FAILED: 0x80090016 (-2146893802) CertUtil: Keyset does not exist

원래 이 PFX를 가져온 MMC 스냅인은 작동하는 것처럼 보입니다. 오류가 보고되지 않고 인증서를 열 때 개인 키가 있다고 표시되지만 .NET 응용 프로그램에서는 해당 키가 없다는 오류가 발생했습니다. 개인 키. 개인 키 권한을 가정하고 앱 풀에 대한 올바른 권한을 추가했습니다. 이것은 아무런 차이가 없었습니다. 이 문제를 해결하기 위해 여러 번 가져오고 삭제했습니다.

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeysMMC를 통해 가져오기를 수행할 때 폴더에 추가된 파일의 크기는 일반적으로 작동하는 시스템에서 2kb로 표시되지만 작동하지 않는 서버에서는 79kb에 불과하다는 것을 확인했습니다 .

파일에 대해 MD5 검사를 수행하여 파일이 동일한지 확인하고 작동하지 않는 시스템(내보내기가 아닌 원본 복사 파일)에서 해당 파일을 다시 복사했는데 다른 곳에서는 여전히 작동합니다.

왜 이것이 실패할까요?

답변1

우리가 수행한 모든 Google 검색은 항상 개인 키의 권한과 관련된 동일한 기본 답변을 반환했지만 이는 우리가 본 오류 메시지를 기반으로 한 것입니다.

결국 우리는 폴더와 레지스트리에 대한 액세스를 기록하기 위해 WinHttpCertCfg.exewith를 사용한 후 문제를 추적했습니다 .Process Monitor

개발자 중 한 명이 테스트 인증서를 추가하면서 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeysMMC의 인증서 스냅인을 통해 권한을 부여하는 대신 IIS가 가져온 인증서의 개인 키에 액세스할 수 있도록 폴더에 대한 보안 권한도 변경했습니다.

그는 새 권한만 추가하고 기존 권한은 변경하지 않았지만 이로 인해 인증서 가져오기가 중단되었습니다. 추가 권한이 제거되면 다시 작동하기 시작했습니다.

다른 사람들도 이와 같은 문제를 겪을 것이라고 의심하지만, 언젠가 다른 사람에게 도움이 될 수 있으므로 질문을 삭제하거나 닫는 것보다 답변하는 것이 가치 있다고 생각했습니다.

관련 정보