![nixos에서 자체 서명된 인증서를 유지하는 방법은 무엇입니까?](https://linux55.com/image/72145/nixos%EC%97%90%EC%84%9C%20%EC%9E%90%EC%B2%B4%20%EC%84%9C%EB%AA%85%EB%90%9C%20%EC%9D%B8%EC%A6%9D%EC%84%9C%EB%A5%BC%20%EC%9C%A0%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
virtualbox 가상 머신을 구축하는 nix 표현식이 있습니다. 프로세스의 일부로 자체 서명 SSL 인증서를 설치했습니다.
certfile = builtins.readFile ./certificate.crt
security.pki.certificates = [ certfile ];
좋은 결과. 문제는 nixos-rebuild를 실행하여 가상 머신을 재구성하려는지 여부입니다. 더 이상 가상 머신 빌드 프로세스의 원본 인증서 파일에 액세스할 수 없으므로(가상 머신이 빌드된 머신이 아닌 가상 머신에서 실행 중이기 때문에) 다음을 통해 파일을 다시 포함할 수 없습니다. 동일한 메커니즘.
나는 이를 수행하는 방법에 대해 세 가지 아이디어를 생각해 냈습니다.
가상 머신 빌드 프로세스 중에 가상 머신의 /root 아래에 인증서의 추가 복사본을 배치합니다. 그런 다음 내 Configuration.nix에서 이를 사용하여 인증서를 다시 추출할 수 있습니다.
security.pki.certificates = [ /root/cert ];
인증서는 항상 내부 서버에서 http로 다운로드할 수 있으므로 nixos-rebuild를 수행할 때마다 Configuration.nix의 fetchUrl을 사용하여 인증서를 다운로드할 수 있습니다. 내 생각에 유일한 단점은 외부 종속성이 도입된다는 것입니다.
인증서는 /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" ];
파일 종속성을 제거하고 구성은 독립적입니다.
그렇지 않고 콘텐츠를 구성 외부에 유지하려면 해당 콘텐츠에 대한 패키지/포크를 만들고 스토어에 추가해야 합니다.