Как мне установить файл сертификата PFX в Ubuntu, чтобы Curl доверял ему?

Я использую Ubuntu 18.04 в подсистеме Windows для Linux 2. Я делаю запрос curl к веб-службе, работающей на стороне Windows используя самоподписанный сертификат. Я получаю эту ошибку:

curl: (60) Проблема с сертификатом SSL: невозможно получить сертификат местного эмитента

Я хочу добавить сертификат в локальное хранилище. У меня есть файл .pfx . Я знаю, что могу использовать -k , но я хочу использовать другие инструменты командной строки против этого сервера.

Как мне это сделать?

Мои собственные испытания

openssl s_client -showcerts -servername server -connect server:443 > foo.pem
openssl x509 -in foo.pem -inform PEM -out foo.crt
sudo cp foo.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Это выглядит правдоподобно, но не т работать, curl по-прежнему имеет ту же жалобу.

Я также пробовал использовать версию DER .

sudo rm /usr/local/share/ca-certificates/windows_cert.crt
openssl x509 -in windows_cert.pem -inform PEM -out windows_cert_der.crt -outform DER
sudo cp windows_cert_der.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Сдаться

Не волнуйтесь, я начал следовать некоторым из отвечает здесь.

https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate

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

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

0
задан 18 February 2020 в 16:12
2 ответа

Вы можете использовать команду openssl для преобразования почти любого формата сертификата в другой. PFX - это другое имя для контейнера pkcs12.

Если вы можете извлечь сертификат в формате PEM, curl должен иметь возможность его использовать.

openssl pkcs12 -in cert.pfx -clcerts -out cert.pem

Это может запросить пароль, который будет использоваться для защиты файла PKCS12

Вы хотите использовать выходной файл cert.pem с параметром командной строки - cacert curl not -k

1
ответ дан 26 February 2020 в 00:36

В семействе Debian дистрибутив способ обработки доверенного сертификата выглядит следующим образом (реконструировано путем просмотра сертификатов update-ca-Certific):

Я буду использовать myca в качестве стандартного имени для вашего сертификата CA (или самоподписанного) и myca.crt в качестве файла с сертификатом (DER или PEM). .Crt является обязательным.

  • Сделайте каталог в / usr / share / ca-Certificates
    • mkdir / usr / share / ca-Certific / myca
  • Поместите в него ca.crt
    • cp ./ca.crt / usr / share / ca-Certific / myca /
  • Запустите dpkg-reconfigure ca-Certificates, выберите ask , чтобы выборочно добавить новые якоря доверия, и выберите во втором просмотрите свой новый myca / myca.crt и нажмите OK
    • dpkg-reconfigure ca-сертификаты

Чтобы сделать это более программно

После того, как вы создали каталог и поместили свой сертификат в:

echo myca/myca.crt >> /etc/ca-certificates.conf
/usr/sbin/update-ca-certificates

Последний не записывает параметр конфигурации в /var/cache/debconf/config.dat, поэтому, если вы запустите dpkg-reconfigure ca-сертификаты или обновите пакет ca-сертификатов, ваш новый якорь доверия может снова исчезнуть. Запуск update-ca-сертификатов безопасен.

Чтобы получить только сертификат от pfx с самоподписанным сертификатом:

openssl pkcs12 -in my.pfx -nokeys -out myca.crt

И введите пароль , чтобы открыть pfx.

Добавление самозаверяющего сертификата в центральный репозиторий доверия корневого уровня означает, что каждый, кто владеет его закрытым ключом, получает возможность выполнять атаки MITM на ваш сервер.

0
ответ дан 26 February 2020 в 00:36

Теги

Похожие вопросы