python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / security / ca.nix
blobc704e2c1f51c36f7d6a036e943fd8e921740adc8
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   cfg = config.security.pki;
9   cacertPackage = pkgs.cacert.override {
10     blacklist = cfg.caCertificateBlacklist;
11     extraCertificateFiles = cfg.certificateFiles;
12     extraCertificateStrings = cfg.certificates;
13   };
14   caBundle = "${cacertPackage}/etc/ssl/certs/ca-bundle.crt";
20   options = {
22     security.pki.certificateFiles = mkOption {
23       type = types.listOf types.path;
24       default = [];
25       example = literalExpression ''[ "''${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" ]'';
26       description = lib.mdDoc ''
27         A list of files containing trusted root certificates in PEM
28         format. These are concatenated to form
29         {file}`/etc/ssl/certs/ca-certificates.crt`, which is
30         used by many programs that use OpenSSL, such as
31         {command}`curl` and {command}`git`.
32       '';
33     };
35     security.pki.certificates = mkOption {
36       type = types.listOf types.str;
37       default = [];
38       example = literalExpression ''
39         [ '''
40             NixOS.org
41             =========
42             -----BEGIN CERTIFICATE-----
43             MIIGUDCCBTigAwIBAgIDD8KWMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJ
44             TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0
45             ...
46             -----END CERTIFICATE-----
47           '''
48         ]
49       '';
50       description = lib.mdDoc ''
51         A list of trusted root certificates in PEM format.
52       '';
53     };
55     security.pki.caCertificateBlacklist = mkOption {
56       type = types.listOf types.str;
57       default = [];
58       example = [
59         "WoSign" "WoSign China"
60         "CA WoSign ECC Root"
61         "Certification Authority of WoSign G2"
62       ];
63       description = lib.mdDoc ''
64         A list of blacklisted CA certificate names that won't be imported from
65         the Mozilla Trust Store into
66         {file}`/etc/ssl/certs/ca-certificates.crt`. Use the
67         names from that file.
68       '';
69     };
71   };
73   config = {
75     # NixOS canonical location + Debian/Ubuntu/Arch/Gentoo compatibility.
76     environment.etc."ssl/certs/ca-certificates.crt".source = caBundle;
78     # Old NixOS compatibility.
79     environment.etc."ssl/certs/ca-bundle.crt".source = caBundle;
81     # CentOS/Fedora compatibility.
82     environment.etc."pki/tls/certs/ca-bundle.crt".source = caBundle;
84     # P11-Kit trust source.
85     environment.etc."ssl/trust-source".source = "${cacertPackage.p11kit}/etc/ssl/trust-source";
87   };