16.10.2007 18:18:47Поиск сертификата УЦ Ответов: 9
Dim
Есть сертификат пользователя, мне надо найти сертификат УЦ и сохранить в файл. Делаю следующие

#define TYPE_DER (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING)

hSystemStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,0,0,CERT_STORE_OPEN_EXISTING_FLAG|CERT_STORE_READONLY_FLAG|CERT_SYSTEM_STORE_CURRENT_USER,L"ROOT")

tempCertif=CertCreateCertificateContext(TYPE_DER,(BYTE *)сertif,(DWORD)lencertif);
tempCertifRoot=CertFindCertificateInStore(hSystemStore,TYPE_DER ,0,CERT_FIND_ISSUER_OF,tempCertif,NULL);

Поиск ничего не дает. И самое главное что это происходит только с одним сертификатом УЦ. Подскажите может я чего не так делаю?
 
Ответы:
16.10.2007 18:20:18Kirill Sobolev
А он точно там есть? Может быть он в Local Machine?
16.10.2007 19:52:26Dim
Точно есть. Я для надежности в юзера и Local Machine сертификат УЦ установил.
17.10.2007 11:37:59Kirill Sobolev
Мб тогда поиск идет не по тому сертификату?
18.10.2007 13:06:31Dim
Сертификат тот который надо, проверил. Может выслать сертификат УЦ и сертификат пользователя
18.10.2007 14:21:58Kirill Sobolev
Лучше выкладывайте прям здесь, в base64
18.10.2007 14:49:05Dim
Сертификат пользователя
-----BEGIN CERTIFICATE-----
MIIEUzCCBACgAwIBAgIKNZ5lRgAAAAAxaDAKBgYqhQMCAgMFADCBnzEeMBwGCSqG
SIb3DQEJARYPY2FAb3JiaXRhY29tLnJ1MQswCQYDVQQGEwJSVTEZMBcGA1UECBMQ
S3Jhc25vZGFyIHJlZ2lvbjESMBAGA1UEBxMJS3Jhc25vZGFyMRQwEgYDVQQKEwtM
SlNDIE9yYml0YTESMBAGA1UECxMJQ0EgT3JiaXRhMRcwFQYDVQQDEw5TRkQgQ2xh
c3MgMSBDQTAeFw0wNzA3MzAxNDUxMDBaFw0wODA3MzAxNTAwMDBaMIIBbDEmMCQG
CSqGSIb3DQEJARYXb29vLWFsdGVybmF0aXZhQGxpc3QucnUxCzAJBgNVBAYTAlJV
MS0wKwYDVQQIHiQEGgRABDAEQQQ9BD4ENAQwBEAEQQQ6BDgEOQAgBDoEQAQwBDkx
IzAhBgNVBAceGgRBBEIALgAgBBoEMAQ9BDUEMgRBBDoEMARPMSkwJwYDVQQKHiAE
HgQeBB4AIAQQBDsETARCBDUEQAQ9BDAEQgQ4BDIEMDFBMD8GA1UEAx44BB4EHgQe
ACAEEAQ7BEwEQgQ1BEAEPQQwBEIEOAQyBDAAIAAoADIAMwAzADQAMAAxADAAMAAx
ACkxMDAuBgkqhkiG9w0BCQITITIzMzQwMTk2MDctMjMzNDAxMDAxLTIzMzQwMDE3
MDk1MjFBMD8GA1UEBB44BBAEPQQ0BEAEOARPBD0EPgQyACAEHQQ4BDoEPgQ7BDAE
OQAgBBIEOAQ6BEIEPgRABD4EMgQ4BEcwYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYH
KoUDAgIeAQNDAARAwZNvotrdhSQcZVm6z1qoGJL6maO9rBOZa8VsuHcmYVrrFQmc
Ba+A8P6n+TsrX7qP0OPiK0LA7lN5S8Z1PVYeyKOCAUgwggFEMA4GA1UdDwEB/wQE
AwIE8DA4BgNVHSUEMTAvBggrBgEFBQcDAgYIKwYBBQUHAwQGByqFAwICIgYGBiqF
AwMHAQYIKoUDAwcBAQEwOwYDVR0RBDQwMqAwBgkqhQMDBwEBAQGgIwwhMjMzNDAx
OTYwNy0yMzM0MDEwMDEtMjMzNDAwMTcwOTUyMB0GA1UdDgQWBBT4OcFiHKBeTFBk
mEhdjSUwL4IMpDAfBgNVHSMEGDAWgBS8EnjN1c0c2Ru5e69A4s+c7/6qzDAzBgNV
HR8ELDAqMCigJqAkhiJodHRwOi8vY2Eub3JiaXRhY29tLnJ1L2NkcC9TRkQuY3Js
MEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcwAoYqaHR0cDovL2NhLm9yYml0YWNv
bS5ydS9jZXJ0aWZpY2F0ZS9TRkQuY3J0MAoGBiqFAwICAwUAA0EAgSKQmetw7P+h
X51DmNsmyMhZ2ECL0jLoROhadqR5hQ8ICT/1liuJCLnP2n+No7ib3sEB9MTN9vU8
g6mVqzPXMg==
-----END CERTIFICATE-----

Сертификат УЦ
-----BEGIN CERTIFICATE-----
MIIDLzCCAtygAwIBAgIQAVyzvUFw4YFPHdAve8uDXjAKBgYqhQMCAgMFADBhMQsw
CQYDVQQGEwJSVTE5MDcGA1UECh4wBCMENAQ+BEEEQgQ+BDIENQRABE8ETgRJBDgE
OQAgBCYENQQ9BEIEQAAgBC4EJAQeMRcwFQYDVQQDEw5TRkQgQ2xhc3MgMSBDQTAe
Fw0wNDExMTExNzQxMTZaFw0xMTExMTExNzUwMTZaMGExCzAJBgNVBAYTAlJVMTkw
NwYDVQQKHjAEIwQ0BD4EQQRCBD4EMgQ1BEAETwROBEkEOAQ5ACAEJgQ1BD0EQgRA
ACAELgQkBB4xFzAVBgNVBAMTDlNGRCBDbGFzcyAxIENBMGMwHAYGKoUDAgITMBIG
ByqFAwICIwEGByqFAwICHgEDQwAEQPNpiAsUmkWO3uudYPDUbw4sRkjeQfYqUjEf
lzPsETAozVPN+5vZTn+yPlYdNXMy6GIEBpO61PDxrcyQBWUDdHSjggFqMIIBZjAL
BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUvBJ4zdXNHNkb
uXuvQOLPnO/+qswwewYDVR0fBHQwcjA2oDSgMoYwaHR0cDovL2NlcnQyL0NlcnRF
bnJvbGwvU0ZEJTIwQ2xhc3MlMjAxJTIwQ0EuY3JsMDigNqA0hjJmaWxlOi8vXFxj
ZXJ0MlxDZXJ0RW5yb2xsXFNGRCUyMENsYXNzJTIwMSUyMENBLmNybDAQBgkrBgEE
AYI3FQEEAwIBADCBlwYDVR0gBIGPMIGMMIGJBgcqhQMCAiYBMH4wMgYIKwYBBQUH
AgEWJmh0dHA6Oi8vVUNXZWJTaXRlL0NBUG9saWN5L2RlZmF1bHQuYXNwMEgGCCsG
AQUFBwICMDweOgQaBDsEMARBBEEAIAAxACAEOAQ0BDUEPQRCBDgERAQ4BDoEMARG
BDgEOAAgBDoEOwQ4BDUEPQRCBDAwCgYGKoUDAgIDBQADQQBVRRLuvlS46BMfyA6W
6Zr8V3pti6aOsfh7G/5rDolvS4l5/Gq+IZpqo7KWt0YtbxWVqK4tBIsjuDzi5fuB
wsZJ
-----END CERTIFICATE-----
18.10.2007 17:54:28Kirill Sobolev
Несовпадение издателя в сертификате пользователя и субъекта в сертификате ЦС.
18.10.2007 18:13:05Dim
А как же тогда проходит проверка цепочки сертификата. И при открытии сертификата на вкладке "Путь сертификации" показывается этот самый путь. Может есть какой другой способ поиска сертификата УЦ?
19.10.2007 11:37:24Kirill Sobolev
При построении цепочки поиск идет по расширению "Идентификатор ключа ЦС" + проверяется подпись сертификата. Способы могут быть самые разные, например тоже построение цепочек либо перебор всех сертификатов - зависит от того, какой у Вас критерий издателя.