Os certificados TLS podem ser reutilizados em servidores diferentes em execução no mesmo domínio / portas diferentes?

1

Sou um programador, não um administrador do sistema. Eu tenho um VPS DreamHost que eu estraguei com o meu site pessoal e uma série de projetos paralelos que são tipicamente apenas experiências em multimídia através de HTML5. Nada particularmente sério, e todos eles correm do lado do cliente.

Eu comecei a incluir certificados assinados em meus sites como A) é bom para os usuários, B) Eu poderia considerar a criação de contas de usuário para alguns recursos multiplayer no futuro nebuloso, e C) também me permite solicitar acesso a determinadas APIs HTML5 uma vez e apenas uma vez. Por exemplo: o reconhecimento de fala precisa ser reconfirmado toda vez que é iniciado em HTTP e ele automaticamente pára de escutar após um minuto. Mas, usando HTTPS, posso fazer com que ele seja reiniciado ouvindo sem que o usuário precise reconfirmar isso; a primeira confirmação foi suficiente.

Eu tenho dois servidores separados em execução:

  • Apache na porta 80: link
  • um servidor Web personalizado baseado em Node.js na porta 8080: link .

Eu mantenho isso assim porque o servidor Apache já estava em execução, funciona bem e ainda sou muito novo no Node. Eu mantenho o Apache rodando para servir as páginas estáticas no meu site que servem como um portfólio para o meu trabalho e apenas confio que o DreamHost tem configurado muito melhor do que eu poderia fazer sozinho. O servidor do nó cai de vez em quando, e às vezes eu não percebo, puramente culpa minha com programação. Manter os dois separados parece ser uma boa ideia por enquanto.

Para o Apache, o DreamHost configurou os próprios certificados e eu tenho a configuração de regras do htaccess para redirecionar o tráfego HTTP para HTTPS. Isso funciona bem.

Para o servidor Node, eu copiei o certificado e a chave privada para fora do CPanel da DreamHost, porque não consegui descobrir onde eles estavam localizados para usar as mesmas cópias que o Apache usa. Eu fiz não copiar o certificado intermediário, pois não consegui descobrir o que fazer com ele. O servidor Node também não redireciona automaticamente o tráfego HTTP, mas provavelmente é só eu que ainda nem pesquisei o problema.

A questão principal sobre a qual estou escrevendo hoje é que, às vezes, quando digito o endereço diretamente para o servidor do Nó no meu smartphone (Android 4.4.2: Chrome 37), ele me diz que o site "não é seguro ". Eu então tenho que pular através de aros para contornar isso e continuar de qualquer maneira. Isso nunca acontece no meu PC (Windows 7: Chrome 37, Firefox 31 ou IE 11) e nunca acontece no smartphone se eu usar um link em uma página servida pelo servidor Apache para acessar o servidor Node. Estou postando aqui porque acho que isso é mais um problema de configuração do que um problema de programação.

Eu seria mais específico na parte "não segura", mas não consigo replicar o problema agora. Estou preocupado que eu tenha sinalizado o site como uma exceção e agora apenas o cobertor o confirma, mas qualquer novo usuário verá o aviso.

    
por moron4hire 11.09.2014 / 16:40

1 resposta

5

Você não tem o certificado intermediário instalado na porta 8080. Muitos (mais?) Certificados hoje em dia não são assinados diretamente por um certificado raiz confiável, eles são assinados por um certificado intermediário que por sua vez é assinado por um certificado raiz confiável. O serviço ativado por SSL deve fornecer os certificados intermediário e "final" para que os clientes verifiquem se o certificado é válido e confiável.

Você pode verificar isso com o comando "openssl s_client host: port", que gera muitas informações, mas aqui estão as diferenças relevantes para seus sites:

$ openssl s_client -connect seanmcbeth.com:443
[...]
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=seanmcbeth.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
---
[...]

$ openssl s_client -connect seanmcbeth.com:8080
[...]
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=seanmcbeth.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
---

Veja como a porta 8080 não possui o certificado AddTrust na cadeia.

    
por 11.09.2014 / 16:55

Tags