Назад | Перейти на главную страницу

RHEL6 и GPG 2.0.14: что такое рабочая конфигурация сервера ключей с прокси?

Задокументированное решение, похоже, не работает. Документированное решение:

В ~/.gnupg/gpg.conf изменить, чтобы использовать сервер ключей HTTP и соблюдать переменную среды http_proxy. Я использую прокси-сервер, который не требует никакой аутентификации, кроме исходного IP. Ура!

keyserver http://http-keys.gnupg.net
keyserver-options honor-http-proxy verbose

Проверьте мою среду:

$ echo $http_proxy
http://proxy.name.com:8080

Проверьте прокси другими способами:

$ telnet proxy.name.com 8080
Connected to proxy.name.com.
Escape character is '^]'.
^]
telnet> close
Connection closed.

strace -f gpg --recv-keys 0xABCDEF показывает, что он игнорирует прокси и безуспешно пытается подключиться напрямую.

Любые идеи?

Да! Я нашел волшебную комбинацию всего, чтобы это работало. Я задокументирую это здесь, чтобы Future Me (и все остальные) могли найти потенциально полезную информацию о том, как заставить GPG работать за корпоративным брандмауэром и соответствующими прокси.

Проблема 1: вообще не попадает в прокси

Экспортируйте вашу среду veriables. Да, это была ошибка новичка. Упс.

Проблема 2: gpgkeys: ошибка http fetch 60

Перенаправления с HTTP на HTTPS. Возможно, это также можно было решить, добавив вручную данные частного CA в конфигурацию моего хоста. Я не фанат этого по ряду причин, связанных с вопросом: "Кому вы доверяете?" и «Что они могут сделать с этим доверием?» Используя известное ненадежное HTTP-соединение, я проясняю, насколько я доверяю этому соединению.

Использование правильного сервера SKS с HTTP дало мне этот не очень полезный результат:

$ gpg --verbose --keyserver=http://na.pool.sks-keyservers.net --keyserver-options=debug --recv-keys 0x1234567
... lots of nice debug data showing that all the connections are working great ...
gpgkeys: no key data found for http://na.pool.sks-keyservers.net/

Проблема 3: Ключевые данные не найдены

Google привел меня к эта проблема с докером, где у них была очень похожая проблема. Пул SKS содержит несколько серверов, которые могут не отвечать на одних и тех же портах. Они предложили использовать http://p80.pool.sks-keyservers.net/

$ gpg --verbose --keyserver=http://p80.pool.sks-keyservers.net --keyserver-options=debug --recv-keys 0x1234567
... connections still working fine via proxy ...
gpgkeys: no key data found for http://p80.pool.sks-keyservers.net/

Похоже, что использование протокола HTTP в пуле p80 не приводит к чему-то, что действительно может искать ключевые данные. Попробуйте использовать протокол HKP:

$ gpg --verbose --keyserver=hkp://p80.pool.sks-keyservers.net --keyserver-options=debug --recv-keys 0x1234567
... connection shows the proxy hangs connecting to port 11371 ...

Ах хорошо. Думаю, мой специальный прокси не может подключиться к старому порту, как раньше. Мне придется исправить это позже ... А пока попробуйте HKP через TCP-порт 80:

$ gpg --verbose --keyserver=hkp://p80.pool.sks-keyservers.net:80 --keyserver-options=debug --recv-keys
... connection shows an HTTP GET
GET http://p80.pool.sks-keyservers.net:80/pks/lookup?op=get&options=mr&search=0x1234567 HTTP/1.1
Host: p80.pool.sks-keyservers.net
...
gpg: pub  1024D/1234567

Успех! HKP через TCP порт 80 работал!

У меня есть ключ! Исправьте мою конфигурацию, чтобы использовать эту рабочую конфигурацию по умолчанию:

$ vi ~/.gnupg/gpg.conf
keyserver hkp://p80.pool.sks-keyservers.net:80