Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo discute a utilização de certificados em aplicações WinUI. Os certificados digitais são usados na criptografia de chave pública para vincular uma chave pública a uma pessoa, computador ou organização. As identidades vinculadas são mais frequentemente usadas para autenticar uma entidade perante outra. Por exemplo, os certificados são frequentemente usados para autenticar um servidor web a um utilizador e um utilizador a um servidor web. Pode criar pedidos de certificados e instalar ou importar certificados emitidos. Também pode inscrever um certificado numa hierarquia de certificados.
Armazenamentos partilhados de certificados
As aplicações WinUI utilizam o novo modelo isolacionista introduzido no Windows 8. Neste modelo, as aplicações executam uma construção de sistema operativo de baixo nível, chamada de contentor de aplicação, que proíbe a aplicação de aceder a recursos ou ficheiros fora de si própria, salvo autorização explícita para tal. As secções seguintes descrevem as implicações que isto tem na infraestrutura de chave pública (PKI).
Armazenamento de certificados por contentor de aplicação
Os certificados destinados a ser usados num contentor específico de aplicações são armazenados por utilizador, em cada localização de contentores de aplicação. Uma aplicação em execução num contentor de aplicações tem acesso de escrita apenas ao armazenamento de certificados próprio. Se a aplicação adicionar certificados a qualquer um dos seus armazenamentos, estes certificados não podem ser lidos por outras aplicações. Se uma aplicação for desinstalada, quaisquer certificados específicos também são removidos. Uma aplicação também tem acesso de leitura a armazenamentos locais de certificados do computador que não sejam os armazenamentos MY e REQUEST.
Cache
Cada contentor de aplicação tem uma cache isolada onde pode armazenar certificados do emissor necessários para validação, listas de revogação de certificados (CRL) e respostas ao protocolo de estado de certificados online (OCSP).
Certificados e chaves partilhados
Quando um cartão inteligente é inserido num leitor, os certificados e chaves contidos no cartão são propagados para a loja MY do utilizador, onde podem ser partilhados por qualquer aplicação de confiança total que o utilizador esteja a executar. Por defeito, no entanto, os contentores de aplicações não têm acesso à loja MY por utilizador.
Para resolver esta questão e permitir que grupos de entidades acedam a grupos de recursos, o modelo de isolamento de contentores de apps suporta o conceito de capacidades. Uma funcionalidade permite que um processo de contentor de aplicação aceda a um recurso específico. A funcionalidade sharedUserCertificates concede a uma aplicação acesso de leitura de contentores aos certificados e chaves contidos na loja MY do utilizador e na loja Smart Card Trusted Roots. A funcionalidade não concede acesso de leitura ao armazenamento REQUEST do utilizador.
Especifica a capacidade sharedUserCertificates no manifesto, como mostrado no exemplo seguinte.
<Capabilities>
<Capability Name="sharedUserCertificates" />
</Capabilities>
Campos de certificado
A norma de certificado de chave pública X.509 foi revista ao longo do tempo. Cada versão sucessiva da estrutura de dados manteve os campos existentes nas versões anteriores e adicionou mais, como mostrado na ilustração seguinte.
Alguns destes campos e extensões podem ser especificados diretamente quando utiliza a classe CertificateRequestProperties para criar um pedido de certificado. A maioria não consegue. Estes campos podem ser preenchidos pela autoridade emissora ou podem ficar em branco. Para mais informações sobre os campos, consulte as seguintes secções:
Campos da versão 1
| Campo | Descrição |
|---|---|
| Versão | Especifica o número de versão do certificado codificado. Atualmente, os valores possíveis deste campo são 0, 1 ou 2. |
| Número de Série | Contém um inteiro positivo e único atribuído pela autoridade certificadora (CA) ao certificado. |
| Algoritmo de assinatura | Contém um identificador de objeto (OID) que especifica o algoritmo usado pela CA para assinar o certificado. Por exemplo, 1.2.840.113549.1.1.5 especifica um algoritmo de hashing SHA-1 combinado com o algoritmo de encriptação RSA da RSA Laboratories. |
| Issuer | Contém o nome distinguido (DN) X.500 da Autoridade de Certificação (CA) que criou e assinou o certificado. |
| Validade | Especifica o intervalo de tempo durante o qual o certificado é válido. As datas até ao final de 2049 utilizam o formato de Tempo Universal Coordenado (Hora Média de Greenwich) (yymmdhhmmssz). As datas a partir de 1 de janeiro de 2050 utilizam o formato de tempo generalizado (yyymmddhhmmssz). |
| Assunto | Contém um nome distinto X.500 da entidade associada à chave pública contida no certificado. |
| Chave Pública | Contém a chave pública e a informação associada do algoritmo. |
Campos da versão 2
Um certificado X.509 versão 2 contém os campos básicos definidos na versão 1 e adiciona os seguintes campos.
| Campo | Descrição |
|---|---|
| Identificador Único do Emissor | Contém um valor único que pode ser usado para tornar o nome X.500 da CA inequívoco quando reutilizado por diferentes entidades ao longo do tempo. |
| Identificador Único do Sujeito | Contém um valor único que pode ser usado para tornar o nome X.500 do sujeito do certificado inequívoco quando reutilizado por diferentes entidades ao longo do tempo. |
Extensões da versão 3
Um certificado X.509 versão 3 contém os campos definidos nas versões 1 e 2 e adiciona extensões de certificado.
| Campo | Descrição |
|---|---|
| Identificador de chave de autoridade | Identifica a chave pública da autoridade certificadora (CA) que corresponde à chave privada da CA usada para assinar o certificado. |
| Restrições Básicas | Especifica se a entidade pode ser usada como CA e, em caso afirmativo, o número de CAs subordinadas que podem existir abaixo dela na cadeia de certificados. |
| Políticas de Certificado | Especifica as políticas sob as quais o certificado foi emitido e os fins para os quais pode ser utilizado. |
| Pontos de distribuição de CRL | Contém o URI da lista base de revogação de certificados (CRL). |
| Uso aprimorado de chaves | Especifica a forma como a chave pública contida no certificado pode ser utilizada. |
| Nome Alternativo do Emissor | Especifica uma ou mais formas de nome alternativas para o emissor do pedido de certificado. |
| Utilização da chave | Especifica restrições às operações que podem ser realizadas pela chave pública contida no certificado. |
| Restrições de nomes | Especifica o espaço de nomes dentro do qual todos os nomes de assuntos numa hierarquia de certificados devem estar localizados. A extensão é usada apenas num certificado CA. |
| Restrições políticas | Restringe a validação de caminhos ao proibir o mapeamento de políticas ou ao exigir que cada certificado na hierarquia contenha um identificador de política aceitável. A extensão é usada apenas num certificado CA. |
| Mapeamentos de políticas | Especifica as políticas numa CA subordinada que correspondem às políticas da CA emissora. |
| Período de Utilização da Chave Privada | Especifica um período de validade diferente para a chave privada do que para o certificado com o qual a chave privada está associada. |
| Nome alternativo do assunto | Especifica uma ou mais formas de nome alternativo para o assunto do pedido de certificado. Exemplos de formulários alternativos incluem endereços de email, nomes DNS, endereços IP e URIs. |
| Atributos do Diretório de Entidades | Transmite atributos de identificação, como a nacionalidade do sujeito do certificado. O valor de extensão é uma sequência de pares de valores OID. |
| Identificador de Chave do Sujeito | Diferencia entre múltiplas chaves públicas detidas pelo sujeito do certificado. O valor da extensão é tipicamente um hash SHA-1 da chave. |
Windows developer