O recurso de certificado

Os certificados fornecem o mecanismo para que os servidores Web provem sua identidade, bem como canais de comunicação seguros. A API de certificados é essencial para criar sites da Web que atendem conteúdo por HTTPS.

get/api/certificates/{id}

{
    "alias": "My Self Signed Certificate",
    "id": "{id}",
    "issued_by": "CN=localhost",
    "subject": "CN=localhost",
    "thumbprint": "1E927A29E966FA11A7C469BC565A9E00B11F5F95",
    "signature_algorithm": "sha256RSA",
    "valid_from": "2017-04-12T11:26:26Z",
    "valid_to": "2019-04-12T11:26:26Z",
    "version": "3",
    "intended_purposes": [
        "Client Authentication",
        "Server Authentication"
    ],
    "private_key": {
        "exportable": "false"
    },
    "subject_alternative_names": [
        "DNS Name=localhost",
        "DNS Name=my-work-pc"
    ],
    "store": {
        "name": "My",
        "id": "{store-id}",
        "_links": {
            "self": {
                "href": "/api/certificates/stores/{store-id}"
            }
        }
    }
}

Solicitações de intervalo

Não é incomum que um servidor Web tenha uma quantidade muito grande de certificados. Para melhorar a usabilidade da API de certificados para esses servidores, o ponto de extremidade dá suporte a solicitações de intervalo. Enviar uma solicitação HEAD para o ponto de extremidade de certificados solicitará que o servidor responda com o número total de certificados disponíveis no cabeçalho HTTP X-Total-Count. Em seguida, os certificados podem ser solicitados em partes definindo o cabeçalho intervalo de em solicitações subsequentes.

head/api/certificates

200 OK
x-total-count: 100

Retreindo o segundo e o terceiro certificados de 100

GET /api/certificates
Access-Token: Bearer {Access-Token}
Range: certificates=1-2

Repositórios de certificados

Todos os certificados pertencem a um repositório de certificados. Uma lista dos repositórios de certificados disponíveis pode ser retraída do ponto de extremidade de repositórios de certificados /api/certificates/stores. Esses repositórios de certificados têm uma propriedade declarações que especificam quais operações são permitidas nos certificados dentro do repositório. Esse acesso é configurável por meio da seção de certificados do arquivo configurações do aplicativo. Atualmente, os repositórios de certificados só dão suporte a operações de leitura. No futuro, a API poderá dar suporte à importação, exportação, exclusão e criação de certificados.

get/api/certificates/stores

{
    "stores": [
        {
            "name": "My",
            "id": "{store-id}",
            "_links": {
                "self": {
                    "href": "/api/certificates/stores/{store-id}"
                }
            }
        },
        {
            "name": "WebHosting",
            "id": "{store-id}"
            // _links omitted
        },
        {
            "name": "IIS Central Certificate Store",
            "id": "{store-id}"
            // _links omitted
        }
    ]
}

Listando certificados para um repositório específico

A API de certificados dá suporte à filtragem de certificados por repositório. Para fazer isso, a propriedade id do repositório de certificados de destino deve ser retreiada. Isso pode ser feito por meio do ponto de extremidade de repositórios de certificados. Em seguida, uma solicitação deve ser feita para o ponto de extremidade de certificados que especifica o campo store.id na cadeia de caracteres de consulta. A solicitação a seguir redirecionará todos os certificados para o repositório de certificados de hospedagem na Web interno.

GET/api/certificates?store.id={store-id}

{
    "certificates": [
        {
            "alias": "WebHostCert",
            "id": "{cert-id}",
            "issued_by": "CN=localhost",
            "subject": "CN=localhost",
            "thumbprint": "8E7933F41998C507B30F0E0AC8B548A903FE7843",
            "valid_to": "2019-02-28T14:32:33Z",
            "_links": {
                "self": {
                    "href": "/api/certificates/{cert-id}"
                }
            }
        }
    ]
}