Nixos
如何使自簽名證書在 nixos 中持續存在?
我有一個建構 virtualbox vm 的 nix 表達式。作為該過程的一部分,我通過以下方式安裝自簽名 ssl 證書
certfile = builtins.readFile ./certificate.crt security.pki.certificates = [ certfile ];
這很好用。問題是如果我想執行 nixos-rebuild 來重新配置 vm。由於我不再可以從 vm 建構過程中訪問原始證書文件(因為我在 vm 中執行,而不是在我建構 vm 的機器上),我不能通過相同的機制再次包含該文件。
關於如何做到這一點,我提出了三個想法:
- 在 vm 建構過程中,在 vm 中的 /root 下放置一份額外的證書副本。然後我可以在我的 configuration.nix 中使用它來再次提取證書:
security.pki.certificates = [ /root/cert ];
- 由於證書始終可用於從內部伺服器進行 http 下載,因此我可以在每次執行 nixos-rebuild 時以某種方式在 configuration.nix 中使用 fetchUrl 來下載它。我想唯一的缺點是引入外部依賴。
- 由於證書在 /etc/ssl/ca-certificates.crt 中,我可以以某種方式從該文件中提取它作為重建過程的一部分,然後再次將其提供給 security.pki.certificates。
想法?
您沒有指定
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" ];
將消除文件依賴性,然後配置是自包含的。否則,如果您想將內容保留在配置之外,則需要為其創建打包/派生並將其添加到商店。