Proteger as comunicações internas

1

A maioria dos contêineres JEE, sistemas de back-end de armazenamento ... oferece uma maneira de usar SSL para obter uma comunicação segura.

Para conseguir isso, não consigo descobrir alguns problemas:

  1. Preciso de um certificado para cada ponto de conexão? Posso usar apenas um e compartilhá-lo?
  2. Em ambientes de produção, eu preciso desses certificados que são emitidos pela raiz CA? E quanto aos ambientes de teste ou desenvolvimento?
  3. Atualmente, todos os meus pontos de conexão (contêiner jee, sistemas de armazenamento) estão sendo executados na mesma máquina. Então, eu acho que não é necessário usar um sistema de comunicação subjacente como o IPSec. Quando meus pontos de comunicação estão em máquinas diferentes, devo adicionar alguns recursos extras de segurança?

Espero ter explicado muito bem.

    
por Jordi 16.02.2017 / 14:01

1 resposta

1

Um usa criptografia para atingir três objetivos diferentes, confidencialidade, integridade e não-repúdio.

Um certificado de servidor permite que o cliente verifique a identidade do servidor remoto, pois o nome do servidor está codificado no certificado.
Quando o certificado do servidor é aceito pelo cliente, uma conexão criptografada é estabelecida e o cliente pode se identificar enviando as credenciais corretas.

  • confidencialidade - A identidade do cliente e do servidor é verificada, e nenhum deles pode ser representado. As comunicações não podem ser interceptadas devido à criptografia.
  • integridade - devido à criptografia, os dados transmitidos não podem ser adulterados.
  • não-repúdio - normalmente exigiria que o cliente usasse SSL mútuo e autenticasse com um certificado SSL de cliente, em vez de ( ou além de) usar credenciais de nome de usuário / senha com apenas um certificado de servidor.

Do I need a certificate for each point of connection?

Quase. Como o certificado é emitido para um nome de host em vez de um serviço específico nesse host, é possível usar o mesmo certificado para vários serviços / terminais em execução nesse host.

Os certificados de cliente são normalmente exclusivos do cliente, e não do host no qual o cliente é executado, ou seja, se você implantar um aplicativo em um cluster, frequentemente todas as instâncias do aplicativo usariam o mesmo certificado de cliente. Embora você também veja que cada nó no cluster possui seu próprio certificado de cliente exclusivo, que seria compartilhado por todos os aplicativos em execução nesse nó e cada instância desse aplicativo em cluster se identificaria com um certificado diferente.

Could I use only one and share it?

Com as considerações mencionadas acima, sim.

In production environments, do I need to use certificates are issued by a trusted CA?

Quando você tem controle total sobre ambos (armazenamentos de certificados) no cliente e no servidor, você não precisa de uma autoridade de certificação (nem pública nem interna), você pode simplesmente copiar as chaves públicas ao redor e use aqueles que verificam os pontos de extremidade.

Caso contrário, usar certificados emitidos pela CA é melhor.

What about on testing or development environments?

O mesmo.

Currently all my connection points (jee container, storage systems) are running on the same machine.

Para ser uma ameaça à confidencialidade e integridade de suas comunicações nesse cenário, um invasor já teria acesso suficiente ao servidor para contornar essa segurança de transporte e acessaria diretamente os dados ...

    
por 17.02.2017 / 13:20