Попытка использовать аутентифицированную удаленную подпись с CFSSL (multirootca) - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь получить аутентифицированную удаленную подпись с использованием CFSSL, запустив multirootca в качестве сервера подписи CA и аутентификацию токена с клиентом CFSSL.

На сервере CA моя конфигурация подписи CA (ca-signature-config.json):

{
"auth_keys": {
    "pri-auth": {
        "type": "standard",
        "key": "0123456789ABCDEF0123456789ABCDEF"
    }
},
"signing": {
    "default": {
        "usages": [
            "digital signature"
        ],
        "expiry": "52608h"
    },
    "profiles": {
        "primary": {
            "auth_key": "pri-auth",
            "usages": [
                "signing",
                "digital signature",
                "key encipherment",
                "server auth",
                "client auth"
            ],
            "expiry": "52608h"
        }
    }
}
}

Мой multirootca.conf:

[primary]
private = file://primary-key.pem
certificate = primary-cert.pem
config = ca-signing-config.json

Я запускаю multirootca, используя:

multirootca -a "127.0.0.1:8888" -l primary -roots multirootca.conf

Затем с клиента(работает на той же машине в моем тестировании):

client-config.json:

{           
"auth_keys" : {
   "pri-auth" : {
      "type" : "standard",
      "key" : "0123456789ABCDEF0123456789ABCDEF"
   }
},
"signing" : {
   "default" : {
      "auth_remote" : {
         "remote" : "pri-server",
         "auth_key" : "pri-auth"
      }
   }
},
"remotes" : {
   "pri-server" : "localhost:8888"
}
}

client.csr:

{
"CN": "my.test",
"Hosts": [
    "my.test"
],
"key": {
    "algo": "ecdsa",
    "size": 384
},
"names": [
    {
        "C": "US",
        "S": "Hawaii",
        "O": "Test, Inc.",
        "OU": "Test Group"
    }
]
}

cfssl sign command:

cfssl sign -config client-config.json -csr client.csr | cfssljson -bare client-output

Проблема заключается в том, что сервер сообщает, что клиент отправляет запрошенный не прошедший проверку подлинности запрос (хотя он находится на правильной конечной точке /authsign).

Вывод сервера:

2019/06/21 07:22:45 [ERROR] [HTTP 401] 1 - authorisation required (received unauthenticated request)
POST /api/v1/cfssl/authsign HTTP/1.1
Host: localhost:8888
Connection: close
Accept-Encoding: gzip
Connection: close
Content-Length: 1196
Content-Type: application/json
User-Agent: Go-http-client/1.1

Вывод клиента:

[ERROR] http error with http://localhost:8888/api/v1/cfssl/authsign
{"code":7400,"message":"{\"success\":false,\"result\":null,\"errors\":[{\"code\":1,\"message\":\"authorisation required\"}],\"messages\":[]}\n"}
Failed to parse input: unexpected end of JSON input

Есть идеи, что я делаю не так?

Спасибо!

1 Ответ

0 голосов
/ 21 июня 2019

Похоже, ты довольно близко. После того, как ваша multirootca запущена и работает, вы сможете использовать cfssl gencert для генерации закрытого ключа и подписи с помощью CA:

cfssl gencert -config=client-config.json -hostname=my.test -profile=primary client.csr | cfssljson -bare my.test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...