Как работать с прозрачным прокси-сервером на основе сертификатов в Arch Linux?

Как работать с прозрачным прокси-сервером на основе сертификатов в Arch Linux?

Я настроил Arch Linux VM на работе, и моя компания использует прозрачный (сквозной) прокси с самоподписанным сертификатом и требует аутентификации. Всякий раз, когда я пытаюсь установить какие-либо пакеты, pacmanя получаю следующую ошибку (например, при попытке установить lynx)

ошибка: не удалось получить файл 'lynx-2.8.7-6-x86_64.pkg.tar.xz' с mirrors.kernel.org : Проблема с сертификатом SSL: самоподписанный сертификат в цепочке сертификатов

Он выдаст эту ошибку для каждого зеркала, которое я определил в /etc/pacman.d/mirrorlist. У меня возникают похожие проблемы при попытке использовать любые другие клиенты HTTP/S, такие как curl, но у меня нет никаких проблем с FTP (в первую очередь потому, что моя компания отслеживает только порты 80 и 443).

То, что я уже пробовал...

  • Размещение самоподписанного сертификата CA моей компании в /usr/share/ca-certificates, и/etc/ca-certificates
  • Настройка http_proxyи https_proxyуказание прокси-сервера моей компании с моими учетными данными
  • Поговорил с человеком, который управляет нашим прокси-сервером, но он ничего не знает о Linux, поэтому понятия не имеет, с чего начать.

На данный момент, когда мне нужно что-то установить или получить доступ к Интернету, я открываю SSH-туннель к своему домашнему серверу, чтобы обойти эту проблему.

Ниже представлен выводopenssl s_client -CApath /etc/ca-certificates -showcerts -connect mirrors.kernel.org:443

ПОДКЛЮЧЕНО(00000003)
глубина=0 C = США, ST = Калифорния, L = Сан-Хосе, O = Организация ядра Linux, CN = *.kernel.org
ошибка проверки: num=20: невозможно получить сертификат локального эмитента
проверить возврат:1
глубина=0 C = США, ST = Калифорния, L = Сан-Хосе, O = Организация ядра Linux, CN = *.kernel.org
ошибка проверки:num=27:сертификат не является доверенным
проверить возврат:1
глубина=0 C = США, ST = Калифорния, L = Сан-Хосе, O = Организация ядра Linux, CN = *.kernel.org
ошибка проверки:num=21:не удалось проверить первый сертификат
проверить возврат:1
---
Цепочка сертификатов
 0 с:/C=US/ST=Калифорния/L=Сан-Хосе/O=Организация ядра Linux/CN=*.kernel.org
   i:/C=US/ST=MyCompanyState/L=MyCompanyCity/O=MyCompanyName/OU=IT/CN=MyCompanyProxyServer/[email protected]
-----НАЧАЛО СЕРТИФИКАТА-----
... бла бла бла
-----КОНЕЦ СЕРТИФИКАТА-----
---
Сертификат сервера
subject=/C=US/ST=Калифорния/L=Сан-Хосе/O=Организация ядра Linux/CN=*.kernel.org
эмитент=/C=US/ST=MyCompanyState/L=MyCompanyCity/O=MyCompanyName/OU=IT/CN=MyCompanyProxyServer/[email protected]
---
Имена CA клиентских сертификатов не отправлены
---

ПримечаниеВероятно, я мог бы попробовать просто использовать FTP-зеркала, но это на самом деле не решит проблему для других HTTP/S-приложений (например, curl).

решение1

Из предоставленной вами информации следует, что вы добавили сертификат сервера в свой /etc/ca-certificatesфайл. Вместо этого вам нужно добавить сертификат CA.

Команда openssl s_client -showcerts, которую вы запустили, должна была включать один или несколько других сертификатов после первого. Это те, которые вас интересуют.
Если после первого сертификата есть несколько, то вам может потребоваться добавить оба в ваш ca-certificatesфайл. Все зависит от того, как настроен центр сертификации на прокси-сервере. Однако, если оба не требуются, и вы все равно добавляете оба, это не повредит.

Однако, если openssl s_client -showcertsне показывает никаких сертификатов, кроме первого, вы влипли. Это означает, что прокси-сервер не отправляет сертификат подписи. Вы можете попытаться связаться с вашей сетевой командой и попросить их об этом. С точки зрения безопасности, у них нет абсолютно никаких причин не предоставить его вам (этоключкоторые необходимо защищать).


Например, я получаю следующее (да, поскольку я не использую SSL-прокси, я получаю настоящие сертификаты, но концепция остается):

# openssl s_client -showcerts -connect mirrors.kernel.org:443
ПОДКЛЮЧЕНО(00000003)
глубина=2 C = US, O = "thawte, Inc.", OU = Certification Services Division, OU = "(c) 2006 thawte, Inc. - Только для авторизованного использования", CN = thawte Primary Root CA
ошибка проверки: num=20: невозможно получить сертификат локального эмитента
проверить возврат:0
---
Цепочка сертификатов
 0 с:/C=US/ST=Калифорния/L=Сан-Хосе/O=Организация ядра Linux/CN=*.kernel.org
   i:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
-----НАЧАЛО СЕРТИФИКАТА-----
MIID2zCCAsOgAwIBAgIQZ7xPhWo7v0ZlPnI5mJWMazANBgkqhkiG9w0BAQUFADA8
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMuMRYwFAYDVQQDEw1U
aGF3dGUgU1NMIENBMB4XDTEyMDEwMzAwMDAWMFoXDTE0MDQwMzIzNTk1OVowdDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcUCFNhbiBK
b3NlMSYwJAYDVQQKFB1UaGUgTGludXggS2VybmVsIE9yZ2FuaXphdGlvbjEVMBMG
A1UEAxQMKi5rZXJuZWwub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEApSbajGUzM+C1Oz6CzyPmek9HH03ToicZeHxOlBfS7yyvIyybxTCBrmkItyc+
sf6b5g2Zf8IPwloaj+ACQaLfm0OOaFrvHERIN1t0pitvmeSDI6BXVYq0eSLEPpSG
YC/3AMdKE21NO1jmL7mtsCB8CW4NAAvy97HkvsPsTPNOp6d/LtcIMYRS347RFgRj
O/J1PU05EEjcpXdy6eCyJLwi2AFLgfBzjS+0UK4tq01HFalULfO/akjC59WG+qrc
P/Yi/1TM8bE2mun1mcuCP7bmyZFDfrGnO2TYcZ/s7z4bTUmEixR6kTdj1foqi7Xk
svko9dXCiUZj4c692ZKZXE+gJwIDAQABo4GgMIGdMAwGA1UdEwEB/wQCMAAwOgYD
VR0fBDMwMTAvoC2gK4YpaHR0cDovL3N2ci1vdi1jcmwudGhhd3RlLmNvbS9UaGF3
dGVPVi5jcmwwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDIGCCsGAQUF
BwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTANBgkq
hkiG9w0BAQUFAAOCAQEAd7mKHpW1mCB1fGuvR44iX83PmSy3BVEpvOlnH1zNSU/Y
2zMmKDbXqAJTY6t20Yq/GpjW3BA2G4xEA6i64WAGZcSmXfc/NDOSh0i5lTrCofCG
3tuts9HTmHJLfeAz9cZiT4rc4ROMV4K17/Uw81UIid952M/4b6OvhaCu5OSnvDUI
3Z6OUy+AuJHbwEyB5bGOJ/mqVKUztgUK17bJiwDhwZ4Q8PT6YKUj5NgPcG6cUKxY
HK6yxvoqH/s1DQJB3JHDSFVgY47ECmoHyQ5MvJN+naNrZJUIH0RTmmHNbQH772W7
m8I66jiDhXTd6+4v8DipvHJOSEv7ebG0Jf6gv7lc6w==
-----КОНЕЦ СЕРТИФИКАТА-----
 1 с:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
   i:/C=US/O=thawte, Inc./OU=Certification Services Division/OU=(c) 2006 thawte, Inc. - Только для авторизованного использования/CN=thawte Primary Root CA
-----НАЧАЛО СЕРТИФИКАТА-----
MIIEbDCCA1SgAwIBAgIQTV8sNAiyTCDNbVB+JE3J7DANBgkqhkiG9w0BAQUFADCB
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw
MjA3MjM1OTU5WjA8MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu
MRYwFAYDVQQDEw1UaGF3dGUgU1NMIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIIBCgKCAQEAmeSFW3ZJfS8F2MWsyMip09yY5tc0pi8M8iIm2KPJFEyPBaRF6BQM
WJAFGrfFwQalgK+7HUlrUjSIw1nn72vEJ0GMK2Yd0OCjl5gZNEtB1ZjVxwWtouTX
7QytT8G1sCH9PlBTssSQ0NQwZ2ya8Q50xMLciuiX/8mSrgGKVgqYMrAAI+yQGmDD
7bs6yw9jnw1EyVLhJZa/7VCViX9WFLG3YR0cB4w6LPf/gN45RdWvGtF42MdxaqMZ
pzJQIenyDqHGEwNESNFmqFJX1xG0k4vlmZ9d53hR5U32t1m0drUJN00GOBN6HAiY
XMRISstSoKn4sZ2Oe3mwIC88lqgRYke7EQIDAQABo4H7MIH4MDIGCCsGAQUFBwEB
BCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTASBgNVHRMB
Af8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0w
GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItOTAdBgNVHQ4EFgQUp6KDuzRFQD38
1TBPErk+oQGf9tswHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ
KoZIhvcNAQEFBQADggEBAIAigOBsyJUW11cmh/NyNNvGclYnPtOW9i4lkaU+M5en
S+Uv+yV9Lwdh+m+DdExMU3IgpHrPUVFWgYiwbR82LMgrsYiZwf5Eq0hRfNjyRGQq
2HGn+xov+RmNNLIjv8RMVR2OROiqXZrdn/0Dx7okQ40tR0Tb9tiYyLL52u/tKVxp
EvrRI5YPv5wN8nlFUzeaVi/oVxBw9u6JDEmJmsEj9cIqzEHPIqtlbreUgm0vQF9Y
3uuVK6ZyaFIZkSqudZ1OkubK3lTqGKslPOZkpnkfJn1h7X3S5XFV2JMXfBQ4MDzf
huNMrUnjl1nOG5srztxl1Asoa06ERlFE9zMILViXIa4=
-----КОНЕЦ СЕРТИФИКАТА-----
 2 s:/C=US/O=thawte, Inc./OU=Certification Services Division/OU=(c) 2006 thawte, Inc. - Только для авторизованного использования/CN=thawte Primary Root CA
   i:/C=ZA/ST=Западный Кейп/L=Кейптаун/O=Thawte Consulting cc/OU=Отдел сертификационных услуг/CN=Thawte Premium Server CA/[email protected]
-----НАЧАЛО СЕРТИФИКАТА-----
MIIERTCCA66gAwIBAgIQM2VQCHmtc+IwueAdDX+skTANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA2MTExNzAwMDawMFoXDTIwMTIzMDizNTk1OVow
gakxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xKDAmBgNVBAsT
H0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xODA2BgNVBAsTLyhjKSay
MDA2IHRoYXd0ZSwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYD
VQQDExZ0aGF3dGUgUHJpbWFyeSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEArKDw+4BZ1JzHpM+doVlzCRBFDA0sbmjxbFtIaElZN/wLMxnC
d3/MEC2VNBzm600JpxzSuMmXNgK3idQkXwbAzESUlI0CYm/rWt0RjSiaXISQEHoN
vXRmL2o4oOLVVETrHQefB7pv7un9Tgsp9T6EoAHxnKv4HH6JpOih2HFlDaNRe+68
0iJgDblbnd+6/FFbC6+Ysuku6QToYofeK8jXTsFMZB7dz4dYukpPymgHHRydSsbV
L5HMfHFyHMXAZ+sy/cmSXJTahcCbv1N9Kwn0jJ2RH5dqUsveCTakd9h7h1BE1T5u
KWn7OUkmHgmlgHtALevoJ4XJ/mH9fuZ8lx3VnQIDAQABo4HCMIG/MA8GA1UdEwEB
/wQFMAMBAf8wOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBz
Oi8vd3d3LnRoYXd0ZS5jb20vY3BzMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
e1tFz6/Oy3r9MZIaarbzRutXSFAwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2Ny
bC50aGF3dGUuY29tL1RoYXd0ZVByZW1pdW1TZXJ2ZXJDQS5jcmwwDQYJKoZIhvcN
AQEFBQADgYEAhKhMyT4qvJrizI8LsiV3xGGJiWNa1KMVQNT7Xj+0Q+pjFytrmXSe
Cajd1FYVLnp5MV9jllMbNNkV6k9tcMq+9oKp7dqFd8x2HGqBCiHYQZl/Xi6Cweiq
95OBBaqStB+3msAHF/XLxrRMDtdW3HEgdDjWdMbWj2uvi42gbCkLYeA=
-----КОНЕЦ СЕРТИФИКАТА-----
---
Сертификат сервера
subject=/C=US/ST=Калифорния/L=Сан-Хосе/O=Организация ядра Linux/CN=*.kernel.org
эмитент=/C=US/O=Thawte, Inc./CN=Thawte SSL CA
---
Имена CA клиентских сертификатов не отправлены
---
SSL-рукопожатие прочитало 3566 байт и записало 636 байт
---
Новый, TLSv1/SSLv3, шифр RC4-SHA
Открытый ключ сервера — 2048 бит.
Безопасное повторное согласование поддерживается
Сжатие: НЕТ
Расширение: НЕТ
SSL-сессия:
    Протокол: TLSv1
    Шифр: RC4-SHA
    Идентификатор сеанса: EAB5C93513AA8829036C7BB9E3F74D99076C8A339EB220832F76DF73D52D0B22
    Идентификатор сеанса-ctx:
    Мастер-ключ: 0A599E2D1CCAA8249E50871FDF03A2137BA034BCB20FA691D1413822BE08E15303CB0F59CDEC0376D670E08632EF0D46
    Ключ-Аргумент: Нет
    Идентификация PSK: Нет
    Подсказка идентификации PSK: Нет
    Имя пользователя SRP: Нет
    Билет сеанса TLS:
    0000 - ак 28 d2 81 da 5e b9 7f-43 52 ab e8 2c b0 ак 1d .(...^..CR..,...
    0010 - c0 27 92 cb 5e 0e 1e 36-e4 77 34 bf 34 f8 cb 2f .'..^..6.w4.4../
    0020 - 04 af 1a 9b ea b3 9e 6f-32 44 4b ce d1 b4 2b 42 .......o2DK...+B
    0030 - 55 а8 е3 ес 9а 6а 76 5д-с0 84 е0 аа 20 29 ае ас U....jv].... )..
    0040 - 7д 45 2б 3б 56 3в 2д 4б-д3 69 60 с8 фб 67 36 07 }Э+;В...;.]п.......
    00a0 - de 09 7d bf 3f b9 2c 9c-af 5d b1 af b2 9b bc 7a ..}.?.,..].....z
    00b0 - 5e b3 92 26 02 3a 0e 47-c9 4b 10 6c 5b f4 2f c3 ^..&.:.GKl[./.

    Время начала: 1380663897
    Время ожидания: 300 (сек)
    Проверьте код возврата: 20 (невозможно получить сертификат локального эмитента)
---

Я бы добавил сертификат 2, (последний). Мне не нужен сертификат 1, так как это цепной сертификат и он авторизован как цепной сертификат сертификатом 2. Однако я мог бы добавить и сертификат 1, и это не повредит.

решение2

Если кому-то поможет, у меня была похожая проблема, и я решил ее немного по-другому. Мой корпоративный прокси-сервер использовал промежуточные самоподписанные сертификаты. Это было заметно не только в программах командной строки на моей виртуальной машине, но и в браузерах. Перейдя на внешний сайт в браузере (Chromiumim), я увидел сообщение «не доверяю», так как сайт использовал промежуточный самоподписанный сертификат. Щелкнув по области значка замка в строке URL, я смог загрузить промежуточные сертификаты. Затем я просто следовал следующим инструкциям. Исправление применяется глобально к программам командной строки, браузерам и т. д.

https://wiki.archlinux.org/title/User:Grawity/Добавление_доверенного_сертификата_CA

Связанный контент