Авторизация в LXD rest API по сети, аутентификация сертификата не работает

Я пытаюсь получить доступ к LXD REST API по сети.

Далее: Ссылка на документ .

  1. lxc config set core.https_address "[::]: 8443"
  2. lxc config set core.trust_password <какой-то случайный пароль>
  3. 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

Приведенная выше команда работает нормально.

Мое понимание аутентификации на основе сертификатов очень ограничено. Любой указатель будет очень признателен.

0
задан 10 November 2017 в 18:27
1 ответ

Пройдено через множество проб и ошибок. Я наконец наткнулся на эту ссылку . Это часть конфигурации LXD, работает просто отлично. Ниже приведены шаги, которые я выполнил:

Установите ZFS , LXD , а затем выполните sudo LXD init , чтобы выполнить обычную настройку.

После этого ,

Конфигурация LXD

  1. sudo lxc config set core.https_address [::]: 8443 , это может быть ваш порт по выбору.
  2. sudo lxc config set core.https_allowed_origin "*" В идеале замените начало доменом из, чтобы получить доступ к API. * сделает его доступным отовсюду.
  3. sudo lxc config set core.https_allowed_methods «GET, POST, PUT, DELETE, OPTIONS»
  4. sudo lxc config set core.https_allowed_headers «Content-Type»
  5. sudo service lxd restart # иногда требуется

Настройка сертификата аутентификации (самоподписанный)

  1. mkdir lxd-api-access-cert-key-files
  2. cd lxd-api-access-cert- key-files

Это просто для хранения файлов, связанных с аутентификацией, в отдельном каталоге.


  1. openssl genrsa -out lxd-webui.key 4096 , это сгенерирует для вас закрытый ключ.
  2. openssl req -new -key lxd-webui.key -out lxd-webui.csr , это создаст запрос сертификата.
  3. openssl x509 -req -days 3650 -in lxd-webui.csr -signkey lxd- webui.key -out lxd-webui.crt . Создать автоматически подписанный сертификат.
  4. 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 , который можно использовать в браузере для аутентификации.
  5. Теперь загрузите файл lxd-webui.pfx . Локально.
  6. Импортируйте файл в браузер.
    1. Chrome Linux
    2. Chrome Windows
    3. FireFox
  7. 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}

0
ответ дан 5 December 2019 в 07:09

Теги

Похожие вопросы