2009-11-13 1 views
2

CertOpenSystemStore를 사용하여 인증서 저장소를 열었으며 Windows Vista Ultimate에서 MMC 콘솔을 통해 설치 한 CertFindCertificateInStore를 사용하여 자체 서명 인증서 (OpenSSL을 사용하여 생성 한)를 찾을 수 있습니다. 그러나 나는 MSDN 문서에서 대답을 발견 할 수 없어서이 오류가 실제로 무엇을 의미하는지 확신하지 못합니다. 인증서 문제입니까? 또는 OS 문제, Windows Server OS가 작동해야한다는 점에서 의미가 있습니까?AcquireCredentialsHandle이 SEC_E_NO_CREDENTIALS를 반환합니다.

Delphi 2010에서 Win32 API를 사용하고 있지만 C 예제가 좋습니다.

덕분에, 브루스

답변

5

MSDN의 오류 설명은 다소 모호 :

자격 증명이 보안 패키지에서 사용할 수 없습니다. 이 오류 AFAIK

는 SSPI 보안 채널 패키지는 인증서에 대한 개인 키를 찾을 수 없습니다 것을 의미 또는 인증서는 SSL/TLS 유효하지 않습니다. 인증서/개인 키가 향상된 CSP가 아닌 PROV_RSA_SCHANNEL Crypto Provider (CSP)에로드되어 있는지 확인하십시오.

자세한 내용은 오류 정보 (자세한 내용은 How to enable Schannel event logging)를 참조하십시오. IIS는 KB이지만 설명 된 방법은 컴퓨터에서 Schannel logging을 전역 적으로 사용할 수 있습니다.

내가 SSL/TLS로 작업 한 이후로 잠시 있었지만, "John Banes"의 게시물과 google에 대해 한 가지 조언을 해줄 수 있다면 약간의 단서를 찾을 수 있습니다.

+0

+1 schannel 로그인을 사용하는 방법에 대한 링크는 매우 유용합니다. 감사. –

+0

Windows Vista에서 OpenSSL을 사용하여 유효한 SSL/TLS 인증서를 생성하는 링크가 있습니까? Schannel에서 사용할 수있는 암호화 수준에 제한이 있습니까? 이 문제는 내 문제처럼 보입니다. UNISP_NAME = 'Microsoft Unified Security Protocol Provider'만 사용하고있는 것 같습니다. 이 주제에 대한 정확한 정보를 찾는 데 어려움이 있으므로 더 많은 힌트를 보내 주셔서 감사합니다. – Bruce

+0

CertOpenStore의 hCryptProv 매개 변수가 이제 레거시로 문서화되어 있고 NULL이어야합니다. Win2k3에서 이것은 SChannel CSP가 될 필요가 있었고, 그 결과 생성 된 HCERTSTORE는 hCertRoot로서 pAuthData로 전달 된 SCHANNEL_CRED 구조체로 AquireCredentialsHandle로 전달되어야했습니다. 비스타에서 볼 수 있듯이 MyUser 또는 MyComputer 상점에서 인증서를로드하는 것만 지원합니다. 즉, 임의의 인증서를 전달할 수 없으며 자격 증명을 전달하고 시스템이 올바른 인증서를 선택할 수 있음을 의미합니다. 내가 꺼져있을 수도 있습니다,이 전체 영역은 MSDN에서 * 매우 * 회색입니다. –