Ошибка синтаксического анализа X509, «отрицательный серийный номер» при извлечении репозитория

Наш сервер выходит в интернет через прокси. Когда я пытаюсь запустить команду pull, например

sudo docker run -t -i ubuntu:14.04 /bin/bash

Я получаю следующую ошибку:

Get https://index.docker.io/v1/repositories/ubuntu/images: tls: failed to parse
    certificate from server: x509: negative serial number

Команда wget wget -S -d -O - https://get.docker.io дает следующий вывод:

Установка --output-document (outputdocument) на вывод DEBUG, созданный Wget 1.13.4 на linux-gnu.

Кодировка URI = UTF-8' URI encoding =UTF-8' --2014-08-27 17:13:46-- https://get.docker.io/ Подключение к :... подключено. Создан сокет 3. Освобождение 0x00000000016829f0 (новый счетчик ссылок 0). Удаление неиспользуемого 0x00000000016829f0.

--- начало запроса --- ПОДКЛЮЧЕНИЕ get.docker.io:443 HTTP/1.1 User-Agent: Wget/1.13.4 (linux-gnu) Прокси-авторизация: Basic Y3RzXDMxMzMwMDpzd2VldGZlbC4yOQ==

---request end--- прокси-сервер ответил: [HTTP/1.1 200 Соединение установлено Дата: среда, 27 августа 2014 г., 11:49:52 GMT Возраст: 0 Через: 1.0 xaahshshhds

] Инициирование рукопожатия SSL. Рукопожатие успешно; подключенный сокет 3 к дескриптору SSL 0x00000000016831c0 сертификат: тема: /[email protected]/C=yy/ST=aa/L=xx/O=yy/OU=mycompany/CN=get.docker.io эмитент: / [email protected]/C=yy/ST=aa/L=xx/O=yy/OU=mycompany/CN=mycompany ОШИБКА: невозможно проверить сертификат get.docker.io, выданный /[email protected]/C=yy/ST=aa/L=xx/O=yy/OU=mycompany/CN=mycompany': Unable to locally verify the issuer's authority. To connect to get.docker.io insecurely, use--no-check -сертификат». Закрыто 3/SSL 0x00000000016831c0

Пожалуйста, дайте мне несколько указаний о том, как я должен решить эту проблему.

ИЗМЕНИТЬ:

Теперь я отключил прокси для этого IP-сегмента, но все равно получаю ту же ошибку. Команда: wget -S -d -O - https://get.docker.io теперь получает следующий вывод:

Setting --output-document (outputdocument) to -
DEBUG output created by Wget 1.13.4 on linux-gnu.

URI encoding = `UTF-8'
--2014-09-04 11:26:12--  https://get.docker.io/
Resolving get.docker.io (get.docker.io)... 162.242.195.77
Caching get.docker.io => 162.242.195.77
Connecting to get.docker.io (get.docker.io)|162.242.195.77|:443... connected.
Created socket 3.
Releasing 0x00000000022d8fd0 (new refcount 1).
Initiating SSL handshake.
Handshake successful; connected socket 3 to SSL handle 0x00000000022dabd0
certificate:
  subject: /serialNumber=exkd9EjUozUulWIyUDurQPMEPBLSc2Bq/OU=GT98568428/OU=See www.rapidssl.com/resources/cps (c)13/OU=Domain Control Validated - RapidSSL(R)/CN=*.docker.io
  issuer:  /C=US/O=GeoTrust, Inc./CN=RapidSSL CA
X509 certificate successfully verified and matches host get.docker.io

---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.13.4 (linux-gnu)
Accept: */*
Host: get.docker.io
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 503 Service Unavailable
Server: nginx/1.7.1
Date: Thu, 04 Sep 2014 06:03:28 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-cache

---response end---

  HTTP/1.1 503 Service Unavailable
  Server: nginx/1.7.1
  Date: Thu, 04 Sep 2014 06:03:28 GMT
  Content-Type: text/html
  Transfer-Encoding: chunked
  Connection: keep-alive
  Cache-Control: no-cache
Registered socket 3 for persistent reuse.
Skipping 108 bytes of body: [<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

] done.
2014-09-04 11:26:13 ERROR 503: Service Unavailable.

person user2289898    schedule 27.08.2014    source источник
comment
Что ж, docker прав - серийный номер не должен быть отрицательным. Это нарушение политики, и программное обеспечение обычно его терпит. Можете ли вы заставить своих ИТ-специалистов сгенерировать новый сертификат? Наверное, проще всего было бы обойти этот вопрос стороной.   -  person jww    schedule 27.08.2014


Ответы (2)


subject: /[email protected]/C=yy/ST=aa/L=xx/O=yy/OU=mycompany/CN=get.docker.io 
issuer: /[email protected]/C=yy/ST=aa/L=xx/O=yy/OU=mycompany/CN=mycompany

Похоже, что прокси в вашей компании использует перехват SSL для проверки SSL-трафика, а это означает, что вместо исходного сертификата вы получаете сертификат, подписанный прокси-центром сертификации вашей компании. Также похоже, что этот прокси-центр сертификации не является доверенным для вашей системы, и поэтому проверка завершается неудачно.

Я бы порекомендовал вам обратиться к администратору брандмауэра, чтобы узнать, как решить эту проблему. Либо они добавят исключение для проверки SSL, либо скажут вам, какой сертификат вам нужно импортировать как доверенный в вашей системе.

person Steffen Ullrich    schedule 27.08.2014
comment
Пожалуйста, проверьте мое редактирование. Даже после того, как я отключу свой прокси, я получаю ту же ошибку. - person user2289898; 04.09.2014
comment
Нет, вы получаете другую ошибку. Проверка сертификата в порядке, но сервер отправляет вам ошибку. Я не получаю эту ошибку, но я также получаю разные IP-адреса для get.docker.io: 54.205.182.244 107.22.52.107 и 162.242.195.77 с вашего сайта. При попытке получить доступ к тому же IP-адресу, который вы используете, я также получаю ту же ошибку, что и вы. Это означает, что либо сервер неисправен, либо ваш DNS не обновлен. - person Steffen Ullrich; 04.09.2014

Это должно быть исправлено для любого Docker, скомпилированного с Go 1.6+, см.: https://github.com/golang/go/commit/a0ea93dea5f5741addc8c96b7ed037d0e359e33f.

person akavel    schedule 18.10.2017