Quais são os nomes dos assuntos/nomes alternativos dos assuntos e como eles diferem entre si?
Especialmente o modelo abaixo da guia "nome do assunto". O que isso muda na solicitação normal de certificado, além de haver uma etapa adicional para colocar informações na guia do assunto durante a inscrição para um certificado.
Qual é a função dos nomes de assuntos (SN)/nomes alternativos de assuntos (SAN) na infraestrutura de chave pública (PKI) da Microsoft? Como as SANs são usadas e quais cenários se beneficiam com sua inclusão em certificados?
Um certificado vincula uma chave pública a um assunto. O assunto de um certificado são os dados do titular. Sua pergunta é como perguntar " Qual é a finalidade de um nome em um passaporte? ".
Tanto o campo Assunto quanto a extensão Nome Alternativo do Assunto (SAN) são simplesmente duas maneiras de identificar o assunto ou o titular.
Originalmente, nos certificados da versão 1, não havia conceito de extensões de certificado (como Nomes Alternativos de Assunto e Restrições Básicas) e a única forma de definir o assunto do certificado era com o campo Assunto. Isso espera um Nome Distinto, que é definido em X.500 e consiste em elementos como Nome Comum (CN), Organização (O) e País (C). Isso funciona razoavelmente bem para endereços como endereços corporativos ou até mesmo endereços pessoais, mas não tão bem para sistemas DNS - não há elemento Hostname no X.500 AFAIK. Se você olhar o certificado deste site, verá que o emissor é:
CN = E1, O = Let's Encrypt, C = US
- razoável.Como parte do processo de verificação do certificado, os navegadores esperam que o elemento do nome do host do URL inserido na barra de endereço corresponda ao assunto do certificado do servidor. Os fornecedores de navegadores esperavam que o FQDN de um host fosse inserido no certificado como o nome comum (veja o certificado deste site e você verá que o CN é
serverfault.com
).No entanto, inserir o FQDN de um servidor no CN é um pouco complicado - e se inserirmos o endereço IP do servidor no navegador? Além disso, e se o assunto de um certificado for identificado por outra coisa, como o UPN de um certificado de cliente no Windows? Também colocamos isso no CN ou adicionamos como um elemento de e-mail? Isso pode ficar confuso e sujeito a erros.
Os certificados da versão 3 introduziram o conceito de extensões, e uma dessas extensões é o Subject Alternative Name (SAN). Isso permite uma definição mais detalhada do tipo do nome. Por exemplo, suporta DNS, endereços IP, endereços de e-mail, URLs e muito mais. Os clientes, portanto, não precisam adivinhar a que o assunto se refere. A SAN também pode conter várias entradas, portanto, você pode ter uma para o FQDN do servidor e outra para seu endereço IP, portanto, inserir qualquer uma delas em um navegador seria considerada válida.
Hoje em dia, os navegadores nem olham para o campo Assunto e esperam que o assunto do servidor (DNS, endereço IP etc.) esteja na SAN.
RFC 5280 seria uma boa leitura antes de dormir se você quiser mais detalhes sobre seu significado, e a Seção 3.1 da RFC 2818 tem uma explicação simples de como eles são usados no contexto de HTTPS. Para uma discussão mais genérica sobre nomes de assuntos correspondentes, considere RFC 6125 (ou observe-o simplesmente pelo título rápido :-))
O nome do assunto identifica o nome para o qual o certificado é emitido. Por exemplo, para um site como google.com, um deles é google.com e a alternativa seria www.google.com
Os nomes dos assuntos são simplesmente o FQDN do domínio para o qual você deseja que o certificado público seja válido.
Nomes alternativos de entidade (SANs) são quaisquer FQDNs adicionais para os quais você deseja que o mesmo certificado também seja válido. SANs são úteis quando você deseja que um único certificado "cobre" vários FQDNs.
Por exemplo, se você estava implantando um cluster Kubernetes, talvez queira um único certificado para
api.<cluster>.<domain>
,api-int.<cluster>.<domain>
, e*.apps.<cluster>.<domain>
, em vez de solicitar três certificados separados.Isso apenas gera menos certificados em geral (o que é mais fácil de gerenciar), ao mesmo tempo que protege e cobre cada componente do sistema.