Аутентификация к LXD rest API по сети, аутентификация сертификата продолжает сбой
Я пытаюсь получить доступ к LXD REST API через сеть.
Подписано: Ссылка на Док.
lxc config set core.https_address "[::]:8443"
lxc config set core.trust_password <some random password>
curl -s -k --cert ~/.config/lxc/client.crt --key ~/.config/lxc/client.key https://127.0.0.1:8443/1.0/certificates -X POST -d '{"type": "client", "password": "some-password"}' | jq
Как указано здесь, официальный REST API Doc.
GET to / is allowed for everyone (lists the API endpoints)
Но при указании браузера (Chrome) на
http://<server-ip>:8443
https://<server-ip>:8443
Оба результата в ERR_INVALID_HTTP_RESPONSE
,
Добавил client.crt
в Windows 10 сертифицировано, через Chrome > Настройки> Управление сертифицированным и Импорт.
Попробовал это с POSTMAN
Все та же проблема.
Работает все нормально, когда доступ изнутри сервера.
curl -s -k --cert ~/.config/lxc/client.crt --key ~/.config/lxc/client.key https://127.0.0.1:8443/1.0 | jq .metadata.auth
Приведенная выше команда работает нормально.
Мое понимание аутентификации на основе сертификатов очень ограничено. Любой указатель будет очень признателен.
1 ответ
Проходя через много проб и ошибок. Я наконец наткнулся на эту ссылку. Это часть конфигурации LXD работает просто отлично. Ниже приведены шаги, которым я следовал.
устанавливать ZFS
, LXD
а затем сделать sudo LXD init
чтобы сделать нормальную конфигурацию.
После этого,
Конфигурация LXD
sudo lxc config set core.https_address [::]:8443
, это может быть ваш порт выбора.sudo lxc config set core.https_allowed_origin "*"
В идеале заменить начало с доменом из API будет доступен.*
сделает его доступным отовсюду.sudo lxc config set core.https_allowed_methods "GET, POST, PUT, DELETE, OPTIONS"
sudo lxc config set core.https_allowed_headers "Content-Type"
sudo service lxd restart # sometimes is required
Настройка сертификата аутентификации (самоподписанный)
mkdir lxd-api-access-cert-key-files
cd lxd-api-access-cert-key-files
Это просто для хранения файлов, связанных с аутентификацией, в отдельном каталоге.
openssl genrsa -out lxd-webui.key 4096
, это сгенерирует закрытый ключ для вас.openssl req -new -key lxd-webui.key -out lxd-webui.csr
, Это создаст запрос сертификата.openssl x509 -req -days 3650 -in lxd-webui.csr -signkey lxd-webui.key -out lxd-webui.crt
, Создайте автоматически подписанный сертификат.openssl pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in lxd-webui.crt -inkey lxd-webui.key -out lxd-webui.pfx -name "LXD WebUI"
, Это будет экспортировать ключи в.pfx
формат, который можно использовать внутри браузера для аутентификации.- Теперь загрузите
lxd-webui.pfx
файл. Местно. - Импортируйте файл в браузер.
lxc config trust add lxd-webui.crt
Сообщает LXC использовать этот сертификат для аутентификации.
тестирование
- Теперь закройте и снова запустите браузер.
- Направьте ваш браузер на
https://[serveri-ip]:[port-defined-earlier]/1.0/networks
Это должно дать ответ, аналогичный приведенному ниже,{"type":"sync","status":"Success","status_code":200,"operation":"","error_code":0,"error":"","metadata":["/1.0/networks/lo","/1.0/networks/ens33","/1.0/networks/lxdbr0"]}