Извините, что этот пост настолько длинный, но я постарался сделать его максимально простым и линейным. В конце концов, моя проблема довольно проста. Первая часть описывает начальную ситуацию, а вторая часть - то, что я пробовал.
Моя хост-система Windows 10, где я использую Docker Desktop 2.1 .0.5.
Это мой Dockerfile:
FROM ubuntu:18.04
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates gnupg2 \
vim tmux htop zsh curl wget
Это моя команда сборки:
docker build --build-arg http_proxy=http://zscaler.proxy.int.xy:80 --build-arg https_proxy=http://zscaler.proxy.int.xy:80 -t ubuntu-tooling:latest .
И вот как я запускаю образ:
docker run -ti --env https_proxy=http://zscaler.proxy.int.xy:80 --env HTTPS_PROXY=http://zscaler.proxy.int.xy:80 --env http_proxy=http://zscaler.proxy.int.xy:80 --env HTTP_PROXY=http://zscaler.proxy.int.xy:80 -v c:/repos/:/repos/ ubuntu-tooling:latest
Теперь я в оболочке:
root@93eabb6b8a55:/# wget https://deb.nodesource.com/gpgkey/nodesource.gpg.key
--2020-02-25 15:03:46-- https://deb.nodesource.com/gpgkey/nodesource.gpg.key
Resolving zscaler.proxy.int.xy (zscaler.proxy.int.xy)... 185.46.212.88
Connecting to zscaler.proxy.int.xy (zscaler.proxy.int.xy)|185.46.212.88|:80... connected.
ERROR: cannot verify deb.nodesource.com's certificate, issued by 'CN=Zscaler Intermediate Root CA (zscaler.net) (t)\\ ,OU=Zscaler Inc.,O=Zscaler Inc.,ST=California,C=US':
Unable to locally verify the issuer's authority.
To connect to deb.nodesource.com insecurely, use `--no-check-certificate'.
Игнорирование проблем с сертификатами не вариант для меня. Я хочу взять его за root и зарегистрировать сертификат прокси-сервера zscaler таким образом, чтобы все проблемы, связанные с сертификатом, vani sh.
У меня был файл zscale- root -ca.pem:
root@93eabb6b8a55:/# openssl x509 -in repos/zscale-root-ca.pem -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
db:be:98:2d:89:b7:7b:93
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, ST = California, L = San Jose, O = Zscaler Inc., OU = Zscaler Inc., CN = Zscaler Root CA, ema
ilAddress = support@zscaler.com
Validity
Not Before: Dec 19 00:27:55 2014 GMT
Not After : May 6 00:27:55 2042 GMT
Subject: C = US, ST = California, L = San Jose, O = Zscaler Inc., OU = Zscaler Inc., CN = Zscaler Root CA, em
ailAddress = support@zscaler.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:...:b9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
B9:...:DF
X509v3 Authority Key Identifier:
keyid:B9:...:DF
DirName:/C=US/ST=California/L=San Jose/O=Zscaler Inc./OU=Zscaler Inc./CN=Zscaler Root CA/emailAddress
=support@zscaler.com
serial:DB:...:93
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
30:...:5d
-----BEGIN CERTIFICATE-----
MI...xd
-----END CERTIFICATE-----
Теперь я конвертирую его в crt следующим образом:
openssl x509 -outform der -in zscale-root-ca.pem -out zscale-root-ca.crt
Затем я следую инструкциям https://askubuntu.com/a/377570/248437:
# cp zscale-root-ca.crt /usr/local/share/ca-certificates/
# update-ca-certificates
Updating certificates in /etc/ssl/certs...
rehash: warning: skipping zscale-root-ca.pem,it does not contain exactly one certificate or CRL
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
# ll /etc/ssl/certs/ | tail -n3
lrwxrwxrwx 1 root root 66 Feb 25 14:52 thawte_Primary_Root_CA_-_G2.pem -> /usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G2.crt
lrwxrwxrwx 1 root root 66 Feb 25 14:52 thawte_Primary_Root_CA_-_G3.pem -> /usr/share/ca-certificates/mozilla/thawte_Primary_Root_CA_-_G3.crt
lrwxrwxrwx 1 root root 51 Feb 25 15:17 zscale-root-ca.pem -> /usr/local/share/ca-certificates/zscale-root-ca.crt*
Но Я все еще получаю жалобы на сертификаты:
root@2aa3273a08bc:/repos# wget https://deb.nodesource.com/gpgkey/nodesource.gpg.key
--2020-02-25 15:19:08-- https://deb.nodesource.com/gpgkey/nodesource.gpg.key
Resolving zscaler.proxy.int.xy (zscaler.proxy.int.xy)... 185.46.212.88
Connecting to zscaler.proxy.int.xy (zscaler.proxy.int.xy)|185.46.212.88|:80... connected.
ERROR: cannot verify deb.nodesource.com's certificate, issued by 'CN=Zscaler Intermediate Root CA (zscaler.net) (t)\\ ,OU=Zscaler Inc.,O=Zscaler Inc.,ST=California,C=US':
Unable to locally verify the issuer's authority.
To connect to deb.nodesource.com insecurely, use `--no-check-certificate'.
Проверка с помощью wget
- это на самом деле самый простой способ проверить это. Первоначально я просто хотел установить nodejs 12, но я не мог свернуть необходимые файлы оболочки, чтобы направить их в bash. Конечно, я сначала попытался добавить -k, но потом столкнулся с проблемами с репозиториями. Поэтому моя цель состоит в том, чтобы лучше понять основную проблему и решить ее на самом деле, вместо того, чтобы просто пытаться исправить мой путь.