Como você obtém um certificado SNI para nomes de host internos?

1

Eu tenho um Synology NAS em casa, que tem uma interface de usuário baseada na web que exponho à Internet pública. Dentro da minha LAN, meu NAS tem o nome de host nas.domain.local. e na Internet pública eu tenho o nome de domínio home.notarealdomainname.com. apontando para meu roteador doméstico (que então encaminha a porta 7000 para o servidor HTTPS do meu NAS na porta 443).

Meu NAS vem com um certificado autoassinado que não é realmente adequado ao propósito, gostaria de instalar um certificado SNI que suporte ambos os nomes de host nas.domain.local. além de home.notarealdomainname.com. - no entanto, todas as principais CAs executar alguma forma de validação de domínio (como deveriam!), mas eles não podem verificar meu nome de domínio .local. para que eles não emitam esse certificado.

Eu não quero emitir meu próprio certificado, pois, por conveniência, gostaria que os navegadores confiassem no certificado.

    
por Dai 18.12.2014 / 19:00

3 respostas

5

CAs públicas só emitirão certificados para domínios públicos. Houve um tempo em que eles abandonaram esse comportamento porque isso causava problemas nos domínios de primeiro nível recém-introduzidos. Além disso, a CA só emite certificados para domínios que pertencem apenas e são usados por uma única parte, o que não é o caso de nomes internos.

O que significa: você aceita o certificado auto-assinado uma vez em todos os dispositivos internos ou precisa rolar sua própria estrutura de PKI privada e importar a autoridade de certificação raiz relevante em todos os dispositivos.

    
por 18.12.2014 / 19:07
0

Estou assumindo que o problema geral que você está tentando resolver é como habilitar HTTPS robusto para o dispositivo para clientes internos e externos, e você não se importa se ele tem dois nomes diferentes. Se isso for verdade, você pode ter outra opção. Se você tiver controle sobre o servidor DNS para a sua rede interna, poderá resolvê-lo home.notarealdomainname.com para o endereço IP interno para clientes internos. Então você só precisa de um certificado para o nome público e pode usar esse nome para acessá-lo interna e externamente. Aqui está como eu faço isso no BIND no Ubuntu Server 14.04:

/etc/bind/rc.conf.local :

...

zone "home.notarealdomainname.com" in {
    type master;
    file "/var/lib/bind/db.home.notarealdomainname.com"
}

...

/var/lib/bind/db.home.notarealdomainname.com :

$ORIGIN .
$TTL  86400
home.notarealdomainname.com    IN SOA dnsserver.domain.local. myemail.emaildomain.com. (
                               1       ; serial
                               86400   ; refresh (1 day)
                               3600    ; retry (1 hour)
                               172800  ; expire (2 days)
                               3600    ; minimum (1 hour)
                               )
                      NS       dnsserver.domain.local.
$ORIGIN home.notarealdomainname.com.
@                         A        192.168.1.123

Basicamente, ele está dizendo ao seu servidor DNS local (aqui assumido como dnsserver.domain.local ) que é a autoridade para a home.notarealdomainname.com zone (mas não notarealdomainname.com , por isso não irá interferir com outros hosts nesse domínio) e retornando o IP local do NAS (aqui assumido como 192.168.1.123 ) para ele.

    
por 18.12.2014 / 19:39
0

I would like to install an SNI certificate

Não existe certificado SNI. Essa é uma extensão TLS e significa que o nome do servidor é enviado no ClientHello .

certificate that supports both the hostnames nas.domain.local. in addition to home.notarealdomainname.com.

As autoridades de certificação provavelmente não emitirão esse certificado por causa de nas.domain.local .

Mas não é claro para mim quando a divulgação é proibida pelo CA / Browser (CA / B) Requisitos básicos (CA e navegadores fazem o que eles concordam nos Fóruns CA / B; eles não seguem nada do IETF ou RFCs).

Por causa de home.notarealdomainname.com , você satisfará a seção 11.1.1, Autorização por registrante de nome de domínio. A Seção 11.3 proíbe *.local , mas isso é devido ao caractere curinga (e não ao nome local).

Como não consigo encontrar onde as autoridades de certificação estão proibidas de emitir o certificado, você deve perguntar às autoridades de certificação sobre a emissão de um certificado que inclua um nome local (além do nome público que você controla).

I don't want to issue my own certificate as, for expediency in use, I would like browsers to trust the certificate.

Você deve executar os seguintes passos (mesmo que não queira fazê-lo):

  1. crie sua própria CA
  2. crie um CSR com todos os nomes que você deseja que o servidor tenha
  3. emitir um certificado com base no CSR
  4. assine o certificado com sua CA
  5. instale sua CA em seus dispositivos e máquinas

A única diferença entre a lista pré-confiável de CAs em navegadores e armazenamentos de certificados e sua CA é que você precisa instalar sua CA manualmente.

Se você precisar usar o OpenSSL para criar um CSR com vários nomes de assunto (como nas.domain.local e home.notarealdomainname.com ), consulte esta pergunta no estouro de pilha: Certificate with Extended Key Usage só funciona no Firefox . Em particular, consulte o arquivo de configuração do OpenSSL .

Por fim, esse é um problema conhecido da Internet das Coisas; e atualmente falta uma solução. Foi recentemente criado na lista de discussão do Web App Security. Consulte Proposta: marcação do HTTP como não seguro :

I'd like to propose consideration of a fourth category: Personal
Devices (home routers, printers, IoT, raspberry pis in classrooms,
refrigerators):
- cannot, by nature, participate in DNS and CA systems
- likely on private network block
- user is the owner of the service, hence can trust self rather than CA

    
por 21.12.2014 / 07:10