Я использую 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 является обязательным.
mkdir / usr / share / ca-Certific / myca
cp ./ca.crt / usr / share / ca-Certific / myca /
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 на ваш сервер.