nixosで自己署名証明書を維持する方法は?

nixosで自己署名証明書を維持する方法は?

virtualbox 仮想マシンを構築する nix 式があります。プロセスの一部として自己署名SSL証明書をインストールしました。

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

良い結果。問題は、 nixos-rebuild を実行して仮想マシンを再構成するかどうかです。仮想マシンのビルドプロセスの元の証明書ファイルにアクセスできなくなったため(仮想マシンがビルドされたマシンではなく仮想マシンで実行されているため)、次のファイルを再度含めることはできません。同じメカニズム。

私はこれを行う方法について3つのアイデアを思いつきました。

  1. 仮想マシンのビルドプロセス中に、仮想マシンの/ rootの下に証明書の追加コピーを配置します。その後、私のConfiguration.nixでそれを使用して証明書を再抽出できます。

    security.pki.certificates = [ /root/cert ];
    
  2. 証明書は常に内部サーバーからhttpにダウンロードできるため、nixos-rebuildを実行するたびにConfiguration.nixのfetchUrlを使用して証明書をダウンロードできます。私の考えに唯一の欠点は、外部依存関係が導入されることです。

  3. 証明書は/etc/ssl/ca-certificates.crtにあり、再構築中にそのファイルから何らかの方法で抽出してsecurity.pki.certificatesに戻すことができます。

アイデアはありますか?

答え1

certfile最初の行の内容を指定していません。で埋められた変数の場合は、builtins.readFileそのステップをスキップして直接変数を埋めることができます。

$> 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

したがって、設定はsecurity.pki.certificates [ "insert certificate here" ];ファイルの依存関係を削除し、構成は独立しています。

そうでなくコンテンツを構成外に維持するには、そのコンテンツのパッケージ/フォークを作成してストアに追加する必要があります。

答え2

私はデプロイメントのためにnixopsを使用すると仮定していますが、そうでない場合でも、すべてのnixスクリプトのパラメータを生成できます。

私のサーバー構成でこのようなことをしました。ここ次に、説明したようにパラメータを使用します。ここ

関連情報