|
|
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Как проверить сертификат что он не отозван? В документации нашел список функций про CRL : https://docs.microsoft.com/ru-ru/windows/desktop/SecCrypto/cryptography-functions#certificate-revocation-list-functions Как ими пользоваться могу только предполагать. Видимо так: 1. CertOpenSystemStore - Какое хранилище тут нужно открыть, как оно называется? 2. В цикле выполнять CertGetCRLFromStore или CertEnumCRLsInStore чтобы перебрать все CRL . Видимо на каждом шаге в конце вызывать CertFreeCRLContext 3. В каждом CRL искать свой сертификат CertFindCertificateInCRL Вроде все. Не понял для чего нужна CertCreateCRLContext Еще вопрос - можно ли всегда исходить что CRL всегда содержится в хранилище? Или нужно самому откуда-то выкачивать его и заливать в хранилище? Или есть еще какие-то варианты? Я просто не представляю как вообще это все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2019, 19:17 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, есть специальные функции для проверки статуса сертификата (цепочек сертификатов), в том числе на отзыв. CertCreateCertificateChainEngine / CertGetCertificateChain / CertFreeCertificateChain / CertFreeCertificateChainEngine SQL-Talker CertOpenSystemStore - Какое хранилище тут нужно открыть, как оно называется?"CA" SQL-TalkerНе понял для чего нужна CertCreateCRLContext чтобы прочитать файл с диска или памяти, а не из хранилища. SQL-TalkerЕще вопрос - можно ли всегда исходить что CRL всегда содержится в хранилище? не всегда. зато при использовании CertCreateCertificateChainEngine / CertGetCertificateChain с определенными параметрами (и при условии, что установлен корневой сертификат, в сертификате есть расширение Точки распространения списков отзыва (CRL) (2.5.29.31)) и URL доступен) это не важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2019, 22:46 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Ghost Writerзато при использовании CertCreateCertificateChainEngine / CertGetCertificateChain ...Стоп, я так-то думал, функции "Certificate Chain Verification Functions" со списками отзыва никак не связаны (проверка цепочки сертификатов это у меня следующая задача) Можно подробнее про списки отзыва и CertCreateCertificateChainEngine / CertGetCertificateChain, плиз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 08:33 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, CertGetCertificateChain параметр dwFlags там даже экземпл есть, хоть и без флагов CERT_CHAIN_REVOCATION_CHECK_... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 09:12 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, В описании функции CertGetCRLFromStore указано https://docs.microsoft.com/en-us/windows/desktop/api/Wincrypt/nf-wincrypt-certgetcrlfromstore The new Certificate Chain Verification Functions are recommended instead of this function.Означает ли это что не нужно вообще проверять сертификат посредством функций которые я приводил в первом посте (CertGetCRLFromStore/CertEnumCRLsInStore , CertFindCertificateInCRL) , а достаточно проверить цепочку сертификатов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 10:09 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, да, если нужен только статус без времени и причины отзыва. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 10:17 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, 1. Т.е. достаточно просто вызвать CertGetCertificateChain и в случае если результат = True , то анализировать значение pChainContext->TrustStatus.dwErrorStatus ? 2. Перед вызовом CertGetCertificateChain нужно ли вызывать CertCreateCertificateChainEngine или это совершенно необязательно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 10:34 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, 1. Да. 2. CertGetCertificateChain использует hChainEngine, полученный с помощью CertCreateCertificateChainEngine ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 10:40 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, 2. В примере в качестве параметра hChainEngine указан NULL, почему я и спросил про обязательность. Т.е., надо полагать, CertCreateCertificateChainEngine все-таки лучше вызывать, а в чем тогда идея кода в примере, где первым параметром CertGetCertificateChain идет NULL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 10:49 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-Talkerа в чем тогда идея кода в примере, где первым параметром CertGetCertificateChain идет NULL ?сам не пойму, ведь hChainEngine предварительно создается при помощи CertCreateCertificateChainEngine но не используется ) ну написано NULL значит параметры по умолчанию. только какие они хз. так что лучше самому контролировать процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 11:01 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Вызываю CertGetCertificateChain - получаю Access violation. Заголовки: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Процедура: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. В чем ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 18:05 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Последний параметр в вызове конечно же раскомментирован должен быть. Это я уже пробовал по разному ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 18:08 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-Talker, CertCreateCertificateChainEngine Код: plaintext 1. 2. 3. 4. phChainEngine - A pointer to the handle of the chain engine created. CertGetCertificateChain Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. hChainEngine - A handle of the chain engine (namespace and cache) to be used. If hChainEngine is NULL, the default chain engine, HCCE_CURRENT_USER, is used. This parameter can be set to HCCE_LOCAL_MACHINE. Это то, что я навскидку вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 19:58 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerПроцедура: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. В чем ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 21:15 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
и еще строчку добавить ChainPara.cbSize := SizeOf(CERT_CHAIN_PARA); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2019, 21:18 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Внес изменения, вроде работает, но явно все равно что-то не так. Вот код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. Первое - если кликнуть на кнопку Button1 - AV при втором вызове CertGetCertificateChain Второе - вообще бред - если удалить строку Memo1.Lines.Append(''); получаем AV при ПЕРВОМ же вызове CertGetCertificateChain Т.е. явно где-то лажа, но где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 19:24 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Первое - если кликнуть на кнопку Button1 два раза - получим AV при втором вызове CertGetCertificateChain ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 19:26 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerТ.е. явно где-то лажа, но где?Импорты функций покажи. Похоже на разрушение стека из-за кривого импорта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 19:43 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Вот: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 19:52 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-TalkerВот:Криминала не видно. Посмотри еще значение регистра ESP до вызова каждой функции и после. Они должны совпадать. Ну и вот это SQL-Talker Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. лучше переписать так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. и хорошо бы коды ошибок анализировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 20:23 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
SQL-Talker Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. видимо, этого куска недостаточно. копируй всё из примера: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 20:34 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Ghost Writerкопируй всё из примера:А еще лучше Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 20:54 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, Взлетело, черт возьми )) Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 20:57 |
|
||
|
CryptoAPI - как проверить сертификат на вхождение в список отозванных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, При вызове CertFindCertificateInStore значение регистра ESP изменяется. Это плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 20:58 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39820594&tid=2039411]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 370ms |

| 0 / 0 |
