Проблемы с загрузками в докере на основе windowsservercore (Appveyor, Visual Studio 2017) - PullRequest
0 голосов
/ 06 июля 2018

У меня небольшой вопрос о загрузке файлов на windowsservercore образе докера. У меня есть небольшое изображение докера, перечисленное здесь: https://github.com/EndurantDevs/sonarqube-mysql-windows-docker

Как видите, существует четыре похожих файла Docker: 2 версии SonarQube, основанные на 2 версиях контейнеров Windows (nanoserver и windowsservercore, через openjdk изображение)

В процессе сборки загрузка необходимых файлов на nanoserver проходит хорошо.

Однако на windowsservercore изображениях я получаю эту проблему:

Invoke-WebRequest : The underlying connection was closed: An unexpected error  occurred on a send. At line:1 char:1
+ Invoke-WebRequest https://sonarsource.bintray.com/Distribution/sonarq ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:Htt     pWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe     ll.Commands.InvokeWebRequestCommand

Итак, проблема возникает при загрузке тех же файлов с тех же серверов, которые хорошо работают с nanoserver.

Применение всех известных исправлений, включая Tls12, не помогло. Я бы предположил, что это проблема на хост-машине со стороны Appveyor. Однако даже исправления для реестра, которые я пробовал, также не помогли.

Вот информация о сборках для сравнения: https://ci.appveyor.com/project/dnikolayev/sonarqube-mysql-windows-docker/build/1.0.53

1 Ответ

0 голосов
/ 06 июля 2018

Попробуйте добавить команду [Net.ServicePointManager]::SecurityProtocol перед Invoke-WebRequest, чтобы отобразить протоколы, включенные в экземпляре докера, и сравнить «хороший» и «плохой». После сравнения вы можете принять решение, как обновить настройки SSL.

Большая часть прощения будет разрешена всем, если установить [Net.ServicePointManager]::SecurityProtocol = 'Ssl3', 'Tls', 'Tls11', 'Tls12'. Это не обязательно поставит под угрозу вашу безопасность, поскольку позволит клиенту договориться о любом протоколе безопасности с сервером, но в любом случае он попытается использовать максимально возможный. Но вы можете быть более строгими, и сравнение «хороших» и «плохих» сборок с помощью команды [Net.ServicePointManager]::SecurityProtocol даст вам представление.

...