nixos에서 자체 서명된 인증서를 유지하는 방법은 무엇입니까?

nixos에서 자체 서명된 인증서를 유지하는 방법은 무엇입니까?

virtualbox 가상 머신을 구축하는 nix 표현식이 있습니다. 프로세스의 일부로 자체 서명 SSL 인증서를 설치했습니다.

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

좋은 결과. 문제는 nixos-rebuild를 실행하여 가상 머신을 재구성하려는지 여부입니다. 더 이상 가상 머신 빌드 프로세스의 원본 인증서 파일에 액세스할 수 없으므로(가상 머신이 빌드된 머신이 아닌 가상 머신에서 실행 중이기 때문에) 다음을 통해 파일을 다시 포함할 수 없습니다. 동일한 메커니즘.

나는 이를 수행하는 방법에 대해 세 가지 아이디어를 생각해 냈습니다.

  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 스크립트에 대한 매개변수를 생성할 수 있습니다.

내 서버 구성에서 이와 같은 작업을 수행했습니다.여기그런 다음 설명된 대로 매개변수를 사용합니다.여기

관련 정보