Я пытаюсь получить аутентифицированную удаленную подпись с использованием 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
Есть идеи, что я делаю не так?
Спасибо!