PKI EJBCA: extrair CA da instância EJBCA e manter apenas a sub-CA

1

Estou procurando uma solução para extrair a CA da instância EJBCA, colocá-la em uma unidade externa, que é protegida em um depósito seguro, por exemplo. Por isso, mantenho apenas o sub-ca para assinar os certificados de usuário final na instância do EJBCA.

Então eu só colocaria de volta quando eu preciso gerar novamente um sub-ca ou revogar um sub-ca já criado.

Dessa forma, posso ter certeza de que, mesmo que meu servidor esteja comprometido, tenho certeza de que apenas o restante do sub-ca está comprometido, mas minha raiz ca ainda é válida.

Existe uma solução para fazer isso?

Obrigado.

    
por Florent 14.04.2016 / 14:57

1 resposta

4

Ter a CA raiz off-line é uma boa política de segurança, por isso é um bom começo. Mas se você quiser que ele seja totalmente separado, você não deve primeiro criar a CA raiz e a subcabo CA no mesmo servidor e, em seguida, remover a CA raiz - em vez disso, você deve configurá-las separadamente desde o início, para que você não É preciso passar por qualquer esforço extra para separá-los. Vou listar algumas maneiras de fazer isso abaixo e também uma maneira de simplesmente bloquear as chaves, mantendo as CAs reais no mesmo lugar.

1 - Servidor totalmente separado

A maneira mais segura é gastar dinheiro com o problema, ou seja, obter um servidor separado para a CA raiz. Crie a CA raiz nesse servidor. Em seguida, vá para o servidor em que você estará executando a CA de emissão e crie a sub-CA nessa. Ter a CA raiz assinar a sub-CA; há informações em o guia do usuário do EJBCA em como fazer isso. Uma vez feito isso, você pode bloquear o servidor com a CA raiz.

2 - disco separado

A segunda maneira é ter uma instância separada do EJBCA / JBoss e do banco de dados (geralmente MySQL), onde todos os dados são armazenados em um disco removível. A vantagem é que você não tem um servidor extra. A desvantagem é alguma complexidade adicional à que você tem - você precisa de arquivos de configuração separados e configurações de inicialização do systemd / arquivos init, e assim por diante. Mas você essencialmente faria da mesma maneira que com um servidor separado, exceto que ao invés de desligar todo o servidor, você desligaria o JBoss e a instância do banco de dados, desmontaria o disco onde seus dados estavam e bloquearia o disco .

3 - Removendo as chaves em vez do disco / servidor

Você pode manter a CA raiz junto com as CAs emissoras, mas remover sua chave privada. Isso é efetivamente incapacitante - está lá, mas não pode assinar nada, então não pode ser abusado. Essa é a maneira mais barata e também facilita quando você usa o CA raiz. Por favor, faça um backup antes de testar isso pela primeira vez!

Todos os passos abaixo são feitos a partir da linha de comando, não da GUI da web. Você pode fazer parte da GUI, mas você ainda precisa acessar o servidor real para mover as coisas, então acho mais fácil fazer tudo lá para começar.

  1. Exporte as chaves da CA raiz para um arquivo PKCS # 12
$ bin/ejbca.sh ca exportca TestCA /mnt/USBDrive/TestCA.p12
Using JBoss JNDI provider...
Enter keystore password: YourVeryGoodPassword
  1. Instale a unidade USB e bloqueie-a no seu cofre.

  2. Remova o armazenamento de chaves do servidor

$ bin/ejbca.sh ca removekeystore TestCA
Using JBoss JNDI provider...

Se você olhar a GUI agora, verá que o TestCA está off-line e não pode ser ativado.

  1. Quando quiser usar a CA raiz novamente, importe o keystore:
$ bin/ejbca.sh ca restorekeystore TestCA /mnt/USBDrive/TestCA.p12 -s SignatureKeyAlias -e EncryptionKeyAlias
Using JBoss JNDI provider...
Enter keystore password: YourVeryGoodPassword
$ 

E, claro, remova o keystore novamente, como no passo 3, depois de terminar com o que você está fazendo.

    
por 14.04.2016 / 15:36