Pergunta

Eu me vejo a necessidade de armazenar certificados de chaves públicas, e um único certificado de chave particular para uma aplicação in-house.

Um membro de nossa equipe sugeriu armazenar os X509 certificados no banco de dados, em vez de armazená-lo no armazenamento de certificados do Windows, como temos vindo a fazer até agora. Eu não gosto de re-inventar a roda, mas eu tenho a pelo menos considerar a idéia. isso significaria manter nossos dados mais centralizada, o que é bom, eu acho.

As barreiras iniciais que eu posso ver são:

  • A chave privada ainda precisa ser armazenado em algum lugar, e eu não sei se shoehorning lo em uma tabela 'chave pública' é uma boa idéia. Eu não gosto da ideia da criação de uma mesa para um único elemento, qualquer um. Talvez apenas manter a chave privada como um arquivo local? (Ficheiro.pfx, por exemplo).
  • Listas de Revogação. Nós provavelmente teria de estabelecer um processo para lidar com chaves públicas revogados.

Eu não tenho muita experiência com X509 certificados, por isso, a minha pergunta é: Existem outros problemas que são susceptíveis de encontrar o armazenamento de certificados de chaves públicas em um banco de dados, em vez de ir com o armazenamento de certificados do Windows

É importante ter em mente que esta aplicação vai ser lançada em vários servidores clientes empresariais, mantendo assim todos os dados em um único lugar vai fazer para backups mais fáceis. Oh, e o aplicativo em casa em questão está sendo desenvolvido com C # ..

Obrigado!

Foi útil?

Solução

O que é o propósito da sua aplicação?

Se você está lidando com toda a criptografia em seu aplicativo, e pode fazer referência a um arquivo + chave privada 12 cert PKCS #, em seguida, ir a rota de banco de dados é provavelmente bem.

Se você precisar usar o Windows Crypto API para acessar os certificados, então você provavelmente vai querer continuar usando o built-in armazenamento de certificados. Você ganha algumas vantagens aqui como você pode proteger a chave privada em um dispositivo externo, como um cartão inteligente ou Hardware Security Module (HSM).

Você vai querer se certificar de que você passar por um esforço significativo para proteger a chave privada se você está armazenando tudo no disco local. Certifique-se de usar uma senha forte e usar as melhores práticas para proteger esta senha em seu aplicativo.

Outras dicas

Eu não estariam dispostos a mover a chave privada para qualquer outro local a não ser realmente necessário. A sua não é necessária se a chave está sendo usada para assinar e só seria necessária se a chave está sendo usada para descriptografar e quiser arquivá-lo para o futuro. Mesmo neste caso, a autoridade de certificação que emitiu o certificado seria comumente ser capaz de lidar com arquivamento e recuperação. Este é certamente o caso para as autoridades de certificação mais populares, como Microsoft e Entrust.

Se você deve armazená-lo em seguida, criptografá-lo usando AES e uma chave que você é capaz de proteger tanto em um HSM (Hardware Security Module) ou em um cartão inteligente. Não deixe esta chave em texto simples (em um arquivo ou o registro).

Você também deseja proteger esta chave em trânsito entre a sua localização geração ea base de dados central. SSL ou VPN etc

listas de revogação são publicados pela Autoridade de Certificação na maioria dos ambientes, geralmente a um LDAP ou no diretório ou ambos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top