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