Como eu faço um certificado auto-assinado persistir em nixos?

3

Eu tenho uma expressão nix que cria um virtualbox vm. Como parte desse processo, eu instalo um certificado SSL auto-assinado via

certfile = builtins.readFile ./certificate.crt
security.pki.certificates = [ certfile ];

Isso funciona bem. O problema é se eu quiser executar uma reconstrução do npixel para reconfigurar a vm. Como não tenho mais acesso ao certfile original do processo de compilação vm (porque estou executando na vm, não na máquina onde construí a vm), não posso simplesmente incluir o arquivo novamente pelo mesmo mecanismo.

Eu tenho três ideias sobre como fazer isso:

  1. Durante o processo de construção da vm, coloque uma cópia extra do certificado em / root na vm. Então eu posso usar isso na minha configuração.nix para puxar o certificado novamente:

    security.pki.certificates = [ /root/cert ];
    
  2. Como o certificado está sempre disponível para download http em um servidor interno, eu poderia de alguma forma usar o fetchUrl no configuration.nix para baixá-lo toda vez que eu fizer uma reconstrução no nixo. Eu suponho que a única desvantagem disso seria introduzir uma dependência externa.

  3. Como o certificado está em /etc/ssl/ca-certificates.crt, eu poderia de alguma forma extraí-lo desse arquivo como parte do processo de reconstrução e depois alimentá-lo novamente para security.pki.certificates.

Idéias?

    
por Phil Hollenback 02.09.2015 / 07:49

2 respostas

1

Você não especificou como é o certfile na primeira linha. Se é uma variável que é preenchida com um builtins.readFile , você pode pular essa etapa e apenas preencher a variável você mesmo.

$> nixos-option security.pki.certificates
Value:
[ "-----BEGIN CERTIFICATE-----
... edited for brevity .... " ]

Default:
[ ]

Example:
[ "NixOS.org\n=========\n-----BEGIN CERTIFICATE-----\nMIIGUDCCBTigAwIBAgIDD8KWMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJ\nTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0\n...\n-----END CERTIFICATE-----\n" ]

Description:

A list of trusted root certificates in PEM format.

Declared by:
  "/etc/nixos/nixpkgs/nixos/modules/security/ca.nix"

Defined by:
  "/etc/nixos/user.nix

Portanto, definir security.pki.certificates [ "insert certificate here" ]; eliminaria a dependência do arquivo e a configuração seria autônoma.

Caso contrário, se você quiser manter o conteúdo fora da configuração, precisará criar um pacote / uma derivação para ele e adicioná-lo ao armazenamento.

    
por 02.09.2015 / 21:52
1

Estou supondo que você esteja implantando com o nixops, mas mesmo que você não esteja, você pode criar argumentos para qualquer script nix.

eu fiz algo similar na configuração do meu servidor aqui e então você usa argumentos como descrito aqui

espero que isso ajude.

    
por 02.09.2015 / 11:53

Tags