Я пытаюсь получить доступ к LXD REST API по сети.
Далее: Ссылка на документ .
lxc config set core.https_address "[::]: 8443"
lxc config set core.trust_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 '{ "тип": "клиент", "пароль": "какой-то пароль"} '| jq
Как указано Здесь официальный документ REST API.
GET для / разрешен для всех (перечисляет конечные точки API)
Но при указании браузера (Chrome) на
http: // : 8443
https: // : 8443
Оба результата приводят к ERR_INVALID_HTTP_RESPONSE
.
Добавлен клиент . 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
Приведенная выше команда работает нормально.
Мое понимание аутентификации на основе сертификатов очень ограничено. Любой указатель будет очень признателен.
Пройдено через множество проб и ошибок. Я наконец наткнулся на эту ссылку . Это часть конфигурации LXD, работает просто отлично. Ниже приведены шаги, которые я выполнил:
Установите ZFS
, LXD
, а затем выполните sudo LXD init
, чтобы выполнить обычную настройку.
После этого ,
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 # иногда требуется
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-ранее] /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"pting}