LINUX.ORG.RU

Включение TLS 1.2 для wine

 , , ,


0

1

На сервере нужно под wine держать запущенную программку, после обновления программки поменяли безопасность и теперь она не рабоает.

Программка написана на .NET Framework 3.5 нормально работает только в wine 4.0 (Windows XP). До обновления программки она подключалась по TLS 1.0 к заморским серверам и все нормально работало, после обновления оставили только протокол TLS 1.2, но он не работает нормально под wine.

В реестре сделаны настройки, которые не помогают. Вываливает ошибку:

The specified value is not valid in the 'SslProtocolType' enumeration

Вопрос что еще сделать чтобы заработал TLS 1.2 для .NET Framework?

Вот данные из реестра:

[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
"SystemDefaultTlsVersions"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
"SystemDefaultTlsVersions"=dword:00000001


[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.0\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"SecureProtocols"=dword:00000a00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000a00




Последнее исправление: AnastasiaM (всего исправлений: 1)

Вообще-то ХР можно и в 5-й ветке задать. Там не показываются изначально 2000 и другие до нее в winecfg. Заодно может стоит сразу на tls 1.3 перейти если заведется.

anonymous
()
Ответ на: комментарий от anonymous

на wine 5.0 не работает эта нужная мне программа, только на wine 4.0 нормально работает. Почему дружит только с 4.0 незнаю, запустить на 5.0 не получается ни под каким соусом.

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

Ну тогда со staging патчами стоит попробовать. Или собрать самостоятельно. У меня то в Gentoo 5-я ветка прекрасно работает с программой изучения языков для 2000-й винды. А в wayland сессии даже не снижает разрешение до 800х600.

anonymous
()
Ответ на: комментарий от anonymous

Staging версии почти все перепробовала, ничего не работает. Только стабильная версия 4.0 работает нормально. Для меня это большая загадка почему это происходит. Есть подозрение что программисты моей програмулины очень криворукие и работает это все только на 4.0.

Может есть возможности как-то доустановить в wine 4.0 какие-то модули или плагины для поддержки TLS 1.2?

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

Не думаю. Может попробовать на 5-й завести с другими версиями дотнетов или установить виндовые версии. Возможно нужно как-то специфически запускать. По аналогии с играми, которым нужны специфические параметры как это в playonlinux происходит можно попробовать программе что-то указать.

anonymous
()
Ответ на: комментарий от anonymous

.NET нужны только от windows, mono не подходит, все эти версии от windows стоят, но возможно нужно доставить какие-то апдейты, но где и как их правильно поставить под wine я просто незнаю. Простого менеджера обновлений как на windows под wine нету. Если знаешь подскажи как установить апдейты под wine.

То что програму нужно запускать особым образом это верно, ей нужно только библиотеки от windows и встроенные от wine или mono не подходят. Я протестировала другие программы и мне кажется что в самом wine нет TLS 1.2. Вопрос как туда это добавить? Кто вообще отвечает за TLS под wine?

AnastasiaM
() автор топика

на винфак

anonymous
()
Ответ на: комментарий от AnastasiaM

У меня нет такой программы чтобы знать точно. А специфический запуск это как в линуксе GDK_BACKEND=x11 lowriter будет строка запуска под вейландом, чтобы либреофис запустился под xwayland и имел тот же буфер, что и у других программ. Чтобы например переводить тексты с использованием электронных словарей навроде goldendict. А иначе можно тыкать сколько угодно слово, а вейланд версич так и не отошлет ничего пока мышкой до словаря не доехпть чтобы снова дважды скопировать в буфер текст для перевода. И playonlinux, равно как и proton от вальвы используют вот эти самые команды. Если поискать можно найти по аналогии то, чего не хватает.

anonymous
()
Ответ на: комментарий от AnastasiaM

Tls скорее всего зависит от самой программы. Если она привязана к OpenSSL или LibreSSL, то может и получится в настройках включить 1.3. Но скорее всего надо будет иметь программу умеющую в TLS 1.3. В браузерах включается отдельно. А сама программа может иметь дистроспкцифичные проблемы и может нормально работать на другом дистрибутиве. Если это какой нибудь центос, то попробовать стоит на дебиане, Void musl или собрать wine из исходников.

anonymous
()

Wine поддерживает TLS 1.2 и 1.3 с помощью gnutls. Он (gnutls) установлен в системе? Если программа 32-битная, то должен быть установлен 32-битный.

Kron4ek ★★★★★
()
Ответ на: комментарий от MaxPower

iexplore очень глючит и часть сайтов не открывает вообще. Открыть ssl test не могу.

TLS жестко прописан внутри программы и он там записан только TLS 1.2. и это точно 1.2 а не 1.1, Я проверяла сервер куда подключается программа и сервер принимает только TLS 1.2.

gnutls в системе стоит но к нему похоже не обращаются т.к. вся программа на C# написана для .NET Framework 3.5 и только с ним и работает.

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

iexplore очень глючит и часть сайтов не открывает вообще. Открыть ssl test не могу.

Что-то с wine не так, у меня нормально открывает ssl test и показывает что поддержка TLS 1.2 есть (версия wine 4.0.4, Windows XP). Я думаю лучше сначала наладить wine что бы встроенный браузер мог нормально открывать сайты, а потом уже с программой разбираться. Не лишним будет проверить и основную систему при помощи ssl test.

MaxPower ★★
()
Последнее исправление: MaxPower (всего исправлений: 1)
Ответ на: комментарий от MaxPower

ssl test на основной системе НЕ под wine говорит что есть TLS 1.2 и 1.3. Под wine 4.0 ни на сервере, ни дома на virtualbox браузер IE под wine 4.0 нормально не работает, сайт ssl test не открывается, хотя часть других сайтов открывает (яндекс и гугл). Ошибок в логах wine нет. Куда копать и почему часть сайтов не работает в IE не понятно.

Как временное решение проблемы это покупка нового сервера на windows.

Надеюсь найдется решение, как запустить поддержку TLS 1.2 для .NET Framework 3.5 на wine 4.0 (Windows XP).

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

gnutls в системе стоит но к нему похоже не обращаются т.к. вся программа на C# написана для .NET Framework 3.5 и только с ним и работает.

К нему специально обращаться не нужно, Wine автоматически это делает (по крайней мере, должен) для реализации любого защищенного соединения. Так что странно, что не работает.

Эту программу можно где-нибудь скачать для проверки?

Как временное решение проблемы это покупка нового сервера на windows.

Можно еще ReactOS попробовать (через qemu, например).

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 2)
Ответ на: комментарий от Kron4ek

Программу брать тут: http://www.ninjatrader.com/ninjatrader/nt7/NinjaTrader.Install.msi

Данные для подключения сгенерить тут введя свою почту и попросив доступ к данным для RealTime: https://www.ninjatrader.com

qemu скорее всего не будет работать т.к. аппаратная виртуализация для CPU выключена (VirtualBox например не работает).

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

Данные для подключения сгенерить тут введя свою почту и попросив доступ к данным для RealTime: https://www.ninjatrader.com

У кого просить? Кстати, не у всех такой миловидный вид как у вас – нам могут и отказать.
На сайте актуальная версия 8 что с ней не так?

MaxPower ★★
()
Ответ на: комментарий от MaxPower

на сайте https://www.ninjatrader.com вводите e-mail и потом у вас спросят: Do you want FREE live market data? отвечаете «yes» вводите свои данные. потом вам скажут что скачать? выбираете 7ю версию т.к. 8я не работает под wine, у меня не получилось ее запустить, если получится то скажи как вы это сделали? Доступ к программе дают всем желающим на 2 недели, ограничений нет.

как потом подключиться с полученными demo данными смотреть тут: https://ninjatrader.com/ConnectionGuides/NinjaTrader-Continuum-Connection-Guide

AnastasiaM
() автор топика
Последнее исправление: AnastasiaM (всего исправлений: 2)
Ответ на: комментарий от AnastasiaM

У меня, судя по «Connected» в левом нижнем углу, программа нормально подключается к серверам. Я проверил на Wine 4.0.4 и на Wine-Staging 5.14 - в обоих случаях нормально работает.

Никакие ключи реестра не прописывал, просто установил dotnet35 через winetricks, а затем и саму программу.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 2)
Ответ на: комментарий от AnastasiaM

Да говорит не удается получить доступ или заблокировано.

anonymous
()
Ответ на: комментарий от Kron4ek

Connected и у меня пишет, а теперь открой Log и покажи что там? Нет ли там ошибок? Сюдя по тому что у тебя оредера для ES отверглись у тебя нет подключения. в логах наверное написано:

The specified value is not valid in the 'SslProtocolType' enumeration

сайт https://www.ninjatrader.com должен нормально работать через прокси, не должно писать что заблокированно, у меня все работает и сюдя потому что люди тут помогают у них тоже все работает.

AnastasiaM
() автор топика
Последнее исправление: AnastasiaM (всего исправлений: 2)
Ответ на: комментарий от AnastasiaM

Таки да, в логах у меня там есть эти ошибки. Мне удалось завести версию 8 (на Wine-Staging 5.14, на 4.0.4 не запускалась), и там в логе я таких ошибок не вижу, да и заказы вроде не отклоняются.

Собственно, 8 версия работает после установки dotnet45 и изменения ОС на Windows 7 в winecfg (это нужно сделать, так как после установки dotnet45 выбирается версия 2003).

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от Kron4ek

Хорошо, спасибо за помощь, я попробую запустить 8 версию на Wine-Staging 5.14. Надеюсь получится это сделать и новая wine версия будет без глюков, а то год назад никакая 5я версия wine не хотела дружить с Ninja 8.

Для уточнения:

  1. Wine-Staging 5.14 какой разрядности x86 или x64 (т.е. какая Windows 7)?
  2. Какая система на основной машине Debian, Ubuntu, CentOS и какой версии?
  3. На голую созданную под wine систему ставится только dotnet45 и потом сразу Ninja 8?
AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

По идее, можно и более новую версию Wine-Staging, главное не 5.18, так как на ней установщик dotnet45 виснет.

Wine-Staging 5.14 какой разрядности x86 или x64 (т.е. какая Windows 7)?

Сам Wine-Staging 64-битный, а префикс я 32-битный использовал.

export WINEARCH=win32

Какая система на основной машине Debian, Ubuntu, CentOS и какой версии?

Arch Linux. Но дистрибутив, по идее, не должен иметь большого значения.

На голую созданную под wine систему ставится только dotnet45 и потом сразу Ninja 8?

Да, на чистый префикс ставится dotnet45, затем сама программа. Ну и, как я уже сказал, ОС на Windows 7 пришлось изменить в winecfg. В моем случае этого было достаточно.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от Kron4ek

Для удобства настройки можно ли использовать PlayOnLinux или он можеть повлиять на стабильность и верность установки? Это вроде как просто надстройка, но на сколько она корректная и стабильная я незнаю.

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

Я PoL давно уже не пользовался, так что точно не могу сказать. Но я думаю он сам по себе не должен вызывать проблем со стабильностью.

Kron4ek ★★★★★
()
Ответ на: комментарий от Kron4ek

В вариантах есть только: Wine-Staging 5.11 и 5.13. на 5.18 есть проблемы с .NET, на 5.11 и 5.13 программа Ninja 8 установилась но не запускается. Я так понимаю нужно только 5.14 или выше?

PS по логам явных ошибок при запуске я не вижу

AnastasiaM
() автор топика
Ответ на: комментарий от Kron4ek

После танцев с бубном - заработала, но есть проблемы. Часть окна иногда не показывается, просто черный экран, пока не поводишь там мышкой ничего нет. и есть еще ошибки в самой программе, в логах wine чисто.

Failed to retrieve system information to build machine ID: 'ProcessorNameString' not found

Failed to create render target: HRESULT: [0x887A0004], Module: [Unknown], ApiCode: [Unknown/Unknown], Message: Unknown

Chart rendering to a software bitmap failed. There is likely a problem with a chart object's render method. D2D error = 'HRESULT: [0x887A0004], Module: [Unknown], ApiCode: [Unknown/Unknown], Message: Unkno
wn'

катринка как выглядит программа: https://i.postimg.cc/JtVfdscT/1.png

AnastasiaM
() автор топика
Последнее исправление: AnastasiaM (всего исправлений: 1)
Ответ на: комментарий от AnastasiaM

У меня тоже черные окна бывают. Попробуй gdi рендер включить для WineD3D: в реестре создай строковый параметр HKEY_CURRENT_USER\Software\Wine\Direct3D\renderer и установи его в значение gdi. Мне это лишь частично помогло, но может тебе поможет полностью.

Failed to retrieve system information to build machine ID: ‘ProcessorNameString’ not found

У меня такой ошибки нет. Она вообще влияет на что-нибудь? Если нет, то можно просто игнорировать ее.

Kron4ek ★★★★★
()
Ответ на: комментарий от Kron4ek

gdi рендер и так стоит и в реестре все прописано, но это не помогает. Ошибку нельзя игнорировать, из-за того что программа не может проверить ID она не может проверить лицензию, нет проверки лицензии - нет работы.

AnastasiaM
() автор топика
Ответ на: комментарий от AnastasiaM

А в реестре (HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0) есть информация о процессоре, и корректная ли она? Особенно важен тот самый ключ ProcessorNameString.

Kron4ek ★★★★★
()
Ответ на: комментарий от Kron4ek

Всё есть, информация верная, там я уже смотрела и пробовала менять значения. Не помогло.

AnastasiaM
() автор топика

Решение не найдено, работь программа стабильно под wine не хочет. Есть подозрения что разные версии Linux по разному работают с wine, у меня не получилось нормально заставить работь нужную мне программу. Для решения проблемы был заменен VPS с Linux и Wine на VPS c Windows Server.

AnastasiaM
() автор топика
Последнее исправление: AnastasiaM (всего исправлений: 1)
5 сентября 2021 г.
Ответ на: комментарий от AnastasiaM

Эта ошибка обычно под WinXP появляется в приложениях использующих SSPI, когда приложение запрашивает использование TLS 1.1 или TLS 1.2. Под Win7 такие приложения прекрасно работают. Под WinXP падают, т.к. нет поддержки TLS в системе. Видимо в Wine также как и в WinXP нет поддержки нужной версии TLS в SSPI. Нужно чтобы приложение использовало свою библиотеку для TLS.

barbosik
()
Ответ на: комментарий от AnastasiaM

«Есть подозрения что разные версии Linux по разному работают с wine»

А , ты догадливая , но скорее всего есть модифицированный wine

anonymous
()

Если дистрибутив линукса старый (которому 10 лет), может обновить системный gnutls? Попробуй более современный дистрибутив Linux, в который установлен Wine 4.0. Либо в имеющемся дистрибутиве Linux обновить gnutls. Можно также пересобрать сам Wine с ним.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от barbosik

Я один раз видел интересный коммит в Wine. «Если версия системы ниже Win98, то сделать так, чтобы скролл мыши не работал». Может с версиями TLS то же самое? Чисто формально для виндовс XP отключена поддержка, хотя могла бы работать?

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

С версиями TLS сложней. К моменту прекращения поддержки WinXP TLS 1.2 еще не было.

Поэтому если используются SSPI, то в WinXP просто нет реализации TLS 1.2. Были патчи для WinXP с флагом PosReady:

Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SYSTEM\WPA\PosReady] 
"Installed"=dword:00000001

Это переключает систему в версию для POS терминалов, которая поддерживалась дольше и для нее есть обновление с поддержкой TLS - KB4019276, его нужно установить после включения PosReady.

А после установки патча, прописать настройки:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

Но с поддержкой TLS в приложениях всеравно нужны танцы с бубном. Всякие ключи и патчи нужно прописывать.

Для систем старше WinXP может помочь прописать в конфиг приложения сразу после startup блока:

   <!--https://kevinchalet.com/2019/04/11/forcing-an-old-net-application-to-support-tls-1-2-without-recompiling-it/ -->
   <!--NOTE: needs to pass SslProtocols.None in the code -->
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/>
   </runtime>

Но чтобы это работало, нужно чтобы в коде не была захардкожена версия, в коде должно использоваться значение SslProtocols.None. Под Win7 это работает. Но под WinXP у меня не сработало. Возможно нужно еще какой-то патч ставить. Вобщем все очень сложно и запущено

barbosik
()
Ответ на: комментарий от barbosik

Немного поковырял, получилось поборото ошибку на WinXP, TLS 1.2 работает из .NET 4.0 приложения.

Инструкция минимальных действий как включить TLS 1.2 на WinXP с нуля:

  1. включить PosReady
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\WPA\POSReady]
"Installed"=dword:00000001
  1. поставить KB4019276
  2. добавить в реестр:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000

после этого TLS 1.2 работает, но при соединении всякие глюки возникают - обрыв соединения, пропуск первых 16 байт TLS потока и т.п. Поэтому настраиваем дальше:

  1. установить на часах дату январь 2019 (так нужно для шага 5)
  2. установить KB4483475 для .NET4.0 или KB4344180 для .NET2.0
  3. добавить в реестр:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

На этом всё, дату на часах можно вернуть. Если на 5 шаге возникла ошибка trust failure, то нужно открыть на диске С папку с распакованным патчем и найти файл KB4344180.msp открыть его свойства, зайти на вкладку подписи, открыть сертификат и добавить корневой сертификат Майкрософт (тот который от 3.23/2011 до 3/23/2036) в Trusted Roots.

После этого соединение по TLS 1.2 работает.

barbosik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.