Summary: | Нет поддержки КриптоПро CSP в WINE | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Vitaly Lipatov <lav> |
Component: | Собирательные | Assignee: | Vitaly Lipatov <lav> |
Status: | CLOSED INVALID | QA Contact: | Константин Кондратюк <kondratyuk> |
Severity: | normal | ||
Priority: | P3 | CC: | akv, amorozov, bogara, boris, darkdan, DjSpiker, kondratyuk, mikhail.v.gavrilov, olezha |
Version: | - | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | 12394 | Связано с: | 5312, 5526 |
Дата напоминания: | |||
Bug Depends on: | 14504, 776, 5348, 5528, 5587, 5662, 5665, 5672, 7119, 7436, 7438, 7441, 8777, 13466 | ||
Bug Blocks: | 502, 961, 4838, 8900 | ||
Attachments: |
Часть лога WINEDEBUG=relay,advapi,reg,seh wine cpload.exe -runserver
Установка КриптоПро CSP 3.6 завершается с ошибкой КриптоПро CSP 3.0 КриптоПро основаная закладка |
Description
Vitaly Lipatov
2008-02-16 20:16:15 MSK
wine cpload.exe -runserver выводит окно с сообщением: "Во время запуска службы была выявлена ошибка установки КриптоПро CSP на Ваш компьютер. Попробуйте переустановить КриптоПро CSP. Если это не устранит ошибку, возможно, Ваша операционная система не поддерживается. За поддержкой обратитесь к разработчику КриптоПро CSP на сайт www.cryptopro.ru." По-видимому, ошибка связана с неудачей при загрузке cpshar.dll: [wine@cellar CSP]$ WINEDEBUG=relay,advapi,reg wine cpload.exe -runserver 2>&1 | grep LoadLibrary 001f:Call KERNEL32.LoadLibraryA(7fdefd44 "C:\\Program Files\\Crypto Pro\\CSP\\cpshar.dll") ret=004037f8 001f:Ret KERNEL32.LoadLibraryA() retval=00000000 ret=004037f8 [wine@cellar CSP]$ pwd /home/wine/.wine-sbis-crypto/dosdevices/c:/Program Files/Crypto Pro/CSP [wine@cellar CSP]$ ls -l cpshar.dll -rw-rw-r-- 1 wine winedevel 94208 Окт 25 2002 cpshar.dll Created attachment 338 [details]
Часть лога WINEDEBUG=relay,advapi,reg,seh wine cpload.exe -runserver
Подскажите пож-ста, об оставшихся вопросах и сроках ввода в эксплуатацию СБИС++?...Заранее СПАСИБО!!!... CryptoPro CSP 3.6 поддерживает Linux: http://www.cryptopro.ru/cryptopro/products/csp/beta.htm Нужно разобраться глобально - какая сейчас ситуация, каково отношение фирмы-разработчика (они брали на тестирование - был ли ответ?), что технически мешает работать, как проверить, что всё работает... Так как есть CryptoPro для Linux, то можно написать обёртку, через которую с ним будут работать Windows-программы. Библиотеки CryptoPro для Linux экспортируют ряд Windows-функций, которые реализованы или будут в будущем реализованы в WINE. Это, например, GetLastError, SetLastError, ряд функций из crypt32.dll. По-видимому, придётся сделать переменную окружения, переключающую crypt32 на использование реализаций из библиотек CryptoPro. Что касается GetLastEror, то видимо надо будет из каждой обёртки, вызывающей функцию CryptoPro, вызывать CryptoPro-версию GetLastError, а затем wine-версию SetLastError.
> как проверить, что всё работает...
Есть примеры программ. Но я не уверен, что они все функции покрывают. Вообще API не такое уж маленькое, так что, ИМХО, желательно для начала ориентироваться на какое-то Win-приложение, использующее CryptoPro, и сделать для начала ту часть обёрток, которая этим приложением используется.
(In reply to comment #7) > Так как есть CryptoPro для Linux, то можно написать Всё-таки, что с работой нативных библиотек? Мне кажется это более перспективным. Возможно, стоит связаться с теми, кто тестировал в КриптоКоме. Я пока не нашёл переписку правда... Created attachment 1435 [details]
Установка КриптоПро CSP 3.6 завершается с ошибкой
Created attachment 1436 [details]
КриптоПро CSP 3.0
При запуске установщика появляется такая ошибка. После нажатия на ОК установщик завершается. В консоли при этом:
fixme:shell:SHAutoComplete SHAutoComplete stub
fixme:exec:SHELL_execute flags ignored: 0x00000180
err:ole:CoGetClassObject class {6c736db1-bd94-11d0-8a23-00aa00b58e10} not registered
err:ole:CoGetClassObject no class object {6c736db1-bd94-11d0-8a23-00aa00b58e10} could be created for context 0x1
err:ole:ITypeInfo_fnInvoke did not find member id 0, flags 0x2!
КриптоПро CSP 2.0 устанавливается успешно. Но при следующем запуске wine происходит ошибка при вызове нереализованной функции rpcrt4.dll.RpcSsDontSerializeContext. В wine невозможно установить сертификат. Как это делается в Windows, можно почитать здесь: http://ereport.sbis.ru/polzovat/cert_change/korn-cert В Windows при открытии сертификата выполняется rundll32.exe cryptext.dll,CryptExtOpenCER center_cert.cer В wine не реализована библиотека cryptext.dll. Кроме описанного выше способа в Windows можно импортировать сертификаты через "Свойства обозревателя" в панели управления (Содержание -> Сертификаты) и с помощью утилиты CertMgr из MS Platform SDK. Диалог в обоих случаях стандартный, но из какой он dll-ки не ясно. В wine можно поставить IE6 и после этого использовать "Свойства обозревателя" из панели управления. Но в wine нельзя добавить сертификат в "Доверенные корневые центры сертификации". Такого хранилища нету. (In reply to comment #13) > Кроме описанного выше способа в Windows можно > импортировать сертификаты через "Свойства > обозревателя" в панели управления > (Содержание -> Сертификаты) и с помощью > утилиты CertMgr из MS Platform SDK. Диалог в обоих > случаях стандартный, но из какой он dll-ки не > ясно. Диалог создаётся функцией CryptUIDlgCertMgr из cryptui.dll. Встроенная в wine реализация не очень надёжна, падает при ряде действий. Сделал программу, создающую диалог с помощью CryptUIDlgCertMgr: wine-etersoft-devel/cert С её помощью на свежесозданной .wine можно добавить сертификат в "Trusted Root Certification Authorities" (это то же, что и "Доверенные корневые центры сертификации"). При установке IE6 ставится ряд Win-бибилотек и в "Доверенные корневые центры сертификации" добавить сертификат уже не удаётся. Тема на форуме CryptoPro http://www.cryptopro.ru/cryptopro/forum2/default.aspx?g=posts&t=87 В WINE не работает программа-пример из SDK, создающая контейнер секретного ключа. $ WINEDEBUG=+crypt wine CreatingKeyContainer.exe Test Warning: there are some errors in winediag output. Run winediag command and check it. trace:crypt:CryptAcquireContextA (0x453480, Test, (null), 75, 00000000) trace:crypt:CryptAcquireContextW (0x453480, L"Test", (null), 75, 00000000) trace:crypt:CryptAcquireContextA (0x453480, Test, (null), 75, 00000008) trace:crypt:CryptAcquireContextW (0x453480, L"Test", (null), 75, 00000008) A new key container has been created. trace:crypt:CryptGetProvParam (0x1317a8, 6, (nil), 0x33fe9c, 00000000) trace:crypt:CryptGetProvParam (0x1317a8, 6, 0x571498, 0x33fe9c, 00000000) A crypto context has been acquired and The name on the key container is Test trace:crypt:CryptGetUserKey (0x1317a8, 2, 0x453484) No signature key is available. Error number : 0x5 Error description: An error other than NTE_NO_KEY getting signature key. trace:crypt:CryptReleaseContext (0x1317a8, 00000000) Оказалось, что CreatingKeyContainer.exe не создаёт контейнер из-за того, что завершается с ошибкой GetConsoleMode. Если сделать, чтобы она всегда возвращала TRUE, то контейнер создаётся. Проблема не проявляется при запуске с перенаправлением вывода: $ wine CreatingKeyContainer.exe Test_container > ckc.log $ wine CreatingKeyContainer.exe Test_container | cat Для работы некоторых программ-примеров из SDK надо кое-что создать. Разбираюсь, как это сделать в WINE. Сделал утилиту для создания сертификатов с помощью КриптоПро: wine-etersoft-devel/cert/mkcert.c Но в WINE она не работает: $ wine mkcert.exe Container1 anonymous CertCreateSelfSignCertificate failed: 57 57 - это ERROR_ADAP_HDW_ERR > 57 - это ERROR_ADAP_HDW_ERR
Упс... номер ошибки выводится в 16-ричной системе счисления, так что это ERROR_INVALID_PARAMETER
Нельзя ли для начала максимально использовать dll из Windows. > Нельзя ли для начала максимально
> использовать dll из Windows.
Вроде бы нет лицензионно чистого способа установить виндовую crypt32.dll. Даже если с ней всё будет работать, какой от этого толк?
(In reply to comment #24) > > Нельзя ли для начала максимально > > использовать dll из Windows. > Вроде бы нет лицензионно чистого способа > установить виндовую crypt32.dll. Даже если с ней > всё будет работать, какой от этого толк? Хочется в первую очередь работающую схему. Детали типа DLL мы подберём, это уже другая задача. Скопировал crypt32.dll и msasn1.dll из Win2000. Написанная мной утилита для создания сертификатов работает. Не работает копирование контейнеров в Панель управления -> КриптоПро CSP -> Сервис -> Скопировать контейнер... Выдаётся ошибка "Invalid parameter". Протестировал работу c КриптоПро 2.0 программ-примеров из директории CSP в SDK для КриптоПро 3.6. CEnvelop - vbs-скрипт, пока пропустил CodingData - работает CreatingHash - работает CreatingKeyContainer - работает CryptAcquireContext - работает только при запуске без аргументов, при запуске с -silent выдаёт ошибку "Error occurred creating a signature key", в Win2000 то же самое CryptMessages - ошибка "Encryption failed" CryptMsgSign - работает CSignData - vbs-скрипт, пока пропустил DecryptFile - работает DerivingSessionKey - работает DuplicatingHash - работает DuplicatingSessionKey - работает EncryptFile - работает EnumeratingProviders - работает ExportInFile - работает ExportingCertificate - работает ExportingSessionKey - работает KernelMode - драйвер, пока пропустил KeyCopy - ошибка "Error during CryptSetKeyParam" Request - vbs-скрипт, пока пропустил SessionKeyParameters - работает SigningHash - работает SILENT - работает WordSignCheck - .NET, пока пропустил XMLSignForVerify - для работы нужен msxml5, пока пропустил XMLVerify - для работы нужен msxml5, пока пропустил XMLVerifyTwoSigs - для работы нужен msxml5, пока пропустил Добавил стаб для RpcSsDontSerializeContext, чтобы не происходило падения при запуске wine с установленным КриптоПро CSP 2.0. Исправил баг, не дававший копировать контейнер. > Исправил баг, не дававший копировать контейнер.
Проблема с CryptMessages также ушла.
Пофиксил поддержку PP_CLIENT_HWND в CryptSetProvParam. В нативной и встроенной crypt32.dll, судя по всему, не полностью совместимо организуется хранение сертификатов. При запуске cert.exe (wine-etersoft-devel/cert/cert.c) с нативной и встроенной библиотеками отличается видимый набор сертификатов. При использовании нативной crypt32.dll не работает утилита для перечисления доверенных корневых сертификатов certenum.exe (wine-etersoft-devel/cert/certenum.c): $ ww certenum.exe fixme:ole:NdrCorrelationInitialize (0x60f894, 0x60f494, 1024, 0x0): stub fixme:ole:NdrCorrelationInitialize (0x60f858, 0x60f458, 1024, 0x0): stub CertOpenStore failed: 80092004 $ WINEDLLOVERRIDES="rpcrt4=n" ww certenum.exe err:service:MACHINE_HANDLEW_bind Couldn't connect to services.exe: error code 1703 err:service:MACHINE_HANDLEW_bind Couldn't connect to services.exe: error code 1703 CertOpenStore failed: 80092004 Написанное выше относится к crypt32.dll (и msasn1.dll) из Win2000. Created attachment 2167 [details]
КриптоПро основаная закладка
wine eter8.20-19.
Установка КриптоПро CSP прошла без проблем.
через wine control захожу в настройку КриптоПРо.
1) На закладке "Общее" не отображается версия КриптоПРО
2) Нет возможности настроить считываетели
3) Нет возможности просмотреть контейнеры. (и соответственно скопировать их)
Вынес последнее сообщение в отдельный баг #8777. Перечитал тред и так и не понял на каком уровне сейчас поддержка КриптоПРО в wine. И какой КриптоПРО надо ставить для работы с токенами (родной под Linux или Windows версию через wine) Хочу поставить КЛИЕНТСКИЙ ТЕРМИНАЛ СИСТЕМЫ АЛЬФА-ДИРЕКТ 3.5 http://www.alfadirect.ru/download/AD3/ADSetup.exe отсюда и заставить его работать с токеном под линуксом. Есть живые в этом треде? (В ответ на comment #35) > Есть живые в этом треде? КриптоПРО CSP 3.6, работает в wine. Устанавливать надо windows версию. (In reply to comment #36) > КриптоПРО CSP 3.6, работает в wine. Устанавливать надо windows версию. у меня инстальник КриптоПРО CSP 3.6 скрещенный с рутокеном https://docs.google.com/file/d/0B0nwzlfiB4aQZ256bDI0cHU0OW8/edit?usp=sharing Взят отсюда http://www.alfadirect.ru/?page=ad_soft поэтому в свободной доступе нет. Соответствующий баг завел на багзилле вайна http://bugs.winehq.org/show_bug.cgi?id=33896 Никто не смотрел что там за ошибки? Походу никому нет дела до этого? Откладываем задачи, к которым не обращались более 100 дней. так никто и не берется этим занятся :( Проект больше не ведётся. Закрываю задачу. Закрыта. |