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

Как мне установить файл сертификата 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

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

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

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

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

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

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

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

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

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

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

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

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

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 на ваш сервер.