source: postlfs/security/make-ca.xml@ 761f653

11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18 xry111/xf86-video-removal
Last change on this file since 761f653 was ee2e637, checked in by Douglas R. Reno <renodr@…>, 17 months ago

make-ca: Remove extra newline from the new python3 instructions

  • Property mode set to 100644
File size: 15.6 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY certhost "https://hg.mozilla.org/">
8 <!ENTITY certpath "/lib/ckfw/builtins/certdata.txt">
9 <!ENTITY make-ca-buildsize "6.6 MB (with all runtime deps)">
10 <!ENTITY make-ca-time "0.1 SBU (with all runtime deps)">
11
12 <!ENTITY make-ca-download "https://github.com/lfs-book/make-ca/releases/download/v&make-ca-version;/make-ca-&make-ca-version;.tar.xz">
13 <!ENTITY make-ca-size "32 KB">
14 <!ENTITY make-ca-md5sum "9b2806b3c7954b7e9fe7a305c3d1a35a">
15]>
16
17<sect1 id="make-ca" xreflabel="make-ca-&make-ca-version;">
18 <?dbhtml filename="make-ca.html"?>
19
20
21 <title>make-ca-&make-ca-version;</title>
22 <indexterm zone="make-ca">
23 <primary sortas="a-make-ca">make-ca</primary>
24 </indexterm>
25
26 <sect2 role="package">
27 <title>Introduction to make-ca</title>
28
29 <para>
30 Public Key Infrastructure (PKI) is a method to validate the authenticity
31 of an otherwise unknown entity across untrusted networks. PKI works by
32 establishing a chain of trust, rather than trusting each individual host
33 or entity explicitly. In order for a certificate presented by a remote
34 entity to be trusted, that certificate must present a complete chain of
35 certificates that can be validated using the root certificate of a
36 Certificate Authority (CA) that is trusted by the local machine.
37 </para>
38
39 <para>
40 Establishing trust with a CA involves validating things like company
41 address, ownership, contact information, etc., and ensuring that the CA
42 has followed best practices, such as undergoing periodic security audits
43 by independent investigators and maintaining an always available
44 certificate revocation list. This is well outside the scope of BLFS (as
45 it is for most Linux distributions). The certificate store provided here
46 is taken from the Mozilla Foundation, who have established very strict
47 inclusion policies described <ulink
48 url="https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/">here</ulink>.
49 </para>
50
51 &lfs112_checked;
52
53 <bridgehead renderas="sect3">Package Information</bridgehead>
54 <itemizedlist spacing="compact">
55 <listitem>
56 <para>
57 Download (HTTP): <ulink url="&make-ca-download;"/>
58 </para>
59 </listitem>
60 <listitem>
61 <para>
62 Download size: &make-ca-size;
63 </para>
64 </listitem>
65 <listitem>
66 <para>
67 Download MD5 Sum: &make-ca-md5sum;
68 </para>
69 </listitem>
70 <listitem>
71 <para>
72 Estimated disk space required: &make-ca-buildsize;
73 </para>
74 </listitem>
75 <listitem>
76 <para>
77 Estimated build time: &make-ca-time;
78 </para>
79 </listitem>
80 </itemizedlist>
81
82 <bridgehead renderas="sect3">make-ca Dependencies</bridgehead>
83
84 <bridgehead renderas="sect4">Required</bridgehead>
85 <para role="required">
86 <xref linkend="p11-kit"/> (required at runtime to
87 generate certificate stores from trust anchors)
88 </para>
89 <!-- /usr/bin/trust is needed to extract the certs to /etc/ssl/certs -->
90
91 <bridgehead renderas="sect4">Optional (runtime)</bridgehead>
92 <para role="optional">
93 <xref role="runtime" linkend="nss"/> (to generate a shared NSSDB)
94 </para>
95
96 <para condition="html" role="usernotes">User Notes:
97 <ulink url='&blfs-wiki;/make-ca'/></para>
98 </sect2>
99
100 <sect2 role="installation">
101 <title>Installation of make-ca</title>
102
103 <para>
104 The <application>make-ca</application> script will download and process
105 the certificates included in the <filename>certdata.txt</filename> file
106 for use as trust anchors for the <xref linkend="p11-kit"/> trust module.
107 Additionally, it will generate system certificate stores used by BLFS
108 applications (if the recommended and optional applications are present
109 on the system). Any local certificates stored in
110 <filename>/etc/ssl/local</filename> will be imported to both the trust
111 anchors and the generated certificate stores (overriding Mozilla's
112 trust). Additionally, any modified trust values will be copied from the
113 trust anchors to <filename>/etc/ssl/local</filename> prior to any
114 updates, preserving custom trust values that differ from Mozilla when
115 using the <command>trust</command> utility from
116 <application>p11-kit</application> to operate on the trust store.
117 </para>
118
119 <para>
120 To install the various certificate stores, first install the
121 <application>make-ca</application> script into the correct location.
122 As the <systemitem class="username">root</systemitem> user:
123 </para>
124
125<screen role="root"><userinput>make install &amp;&amp;
126install -vdm755 /etc/ssl/local</userinput></screen>
127
128 <para>
129 As the <systemitem class="username">root</systemitem> user, after
130 installing <xref linkend="p11-kit"/>, download the certificate source and
131 prepare for system use with the following command:
132 </para>
133
134 <note>
135 <para>
136 If running the script a second time with the same version of
137 <filename>certdata.txt</filename>, for instance, to update the
138 stores when <application>make-ca</application> is upgraded, or to
139 add additional stores as the requisite software is installed,
140 replace the <parameter>-g</parameter> switch with the
141 <parameter>-r</parameter> switch in the command line. If packaging,
142 run <command>make-ca --help</command> to see all available command
143 line options.
144 </para>
145 </note>
146
147<screen role="root"><userinput>/usr/sbin/make-ca -g</userinput></screen>
148
149 <para>
150 You should periodically update the store with the above command,
151 either manually, or via a <phrase revision="sysv">cron job.</phrase>
152 <phrase revision="systemd">systemd timer. A timer is installed at
153 <filename>/usr/lib/systemd/system/update-pki.timer</filename> that, if
154 enabled, will check for updates weekly.</phrase><phrase
155 revision="sysv">If you've installed <xref linkend="fcron"/> and
156 completed the section on periodic jobs, execute</phrase> <phrase
157 revision="systemd">Execute</phrase> the following commands, as the
158 <systemitem class="username">root</systemitem> user, to <phrase
159 revision="sysv">create a weekly cron job:</phrase><phrase
160 revision="systemd">enable the systemd timer:</phrase>
161 </para>
162
163<screen role="nodump" revision="sysv"><userinput>cat &gt; /etc/cron.weekly/update-pki.sh &lt;&lt; "EOF" &amp;&amp;
164<literal>#!/bin/bash
165/usr/sbin/make-ca -g</literal>
166EOF
167chmod 754 /etc/cron.weekly/update-pki.sh</userinput></screen>
168
169<screen role="root" revision="systemd"><userinput>systemctl enable update-pki.timer</userinput></screen>
170
171 </sect2>
172
173 <sect2 role="configuration" id="make-ca-config">
174 <title>Configuring make-ca</title>
175
176 <para>
177 For most users, no additional configuration is necessary, however,
178 the default <filename>certdata.txt</filename> file provided by make-ca
179 is obtained from the mozilla-release branch, and is modified to provide a
180 Mercurial revision. This will be the correct version for most systems.
181 There are several other variants of the file available for use that might
182 be preferred for one reason or another, including the files shipped with
183 Mozilla products in this book. RedHat and OpenSUSE, for instance, use the
184 version included in <xref linkend="nss"/>. Additional upstream downloads
185 are available at the links included in
186 <filename>/etc/make-ca.conf.dist</filename>. Simply copy the file to
187 <filename>/etc/make-ca.conf</filename> and edit as appropriate.
188 </para>
189
190 <indexterm zone="make-ca make-ca-config">
191 <primary sortas="e-etc-make-ca-conf">/etc/make-ca.conf</primary>
192 </indexterm>
193
194 <bridgehead renderas="sect3">About Trust Arguments</bridgehead>
195
196 <para>
197 There are three trust types that are recognized by the
198 <application>make-ca</application> script, SSL/TLS, S/Mime, and code
199 signing. For <application>OpenSSL</application>, these are
200 <parameter>serverAuth</parameter>,
201 <parameter>emailProtection</parameter>, and
202 <parameter>codeSigning</parameter> respectively. If one of the three
203 trust arguments is omitted, the certificate is neither trusted, nor
204 rejected for that role. Clients that use
205 <application>OpenSSL</application> or <application>NSS</application>
206 encountering this certificate will present a warning to the user.
207 Clients using
208 <application>GnuTLS</application> without
209 <application>p11-kit</application> support are not aware of trusted
210 certificates. To include this CA into the
211 <filename>ca-bundle.crt</filename>,
212 <filename>email-ca-bundle.crt</filename>, or
213 <filename>objsign-ca-bundle.crt</filename> files
214 (the <application>GnuTLS</application> legacy bundles), it must have the
215 appropriate trust arguments.
216 </para>
217
218 <bridgehead renderas="sect3">Adding Additional CA Certificates</bridgehead>
219
220 <para>
221 The <filename class="directory">/etc/ssl/local</filename> directory
222 is available to add additional CA certificates to the system trust store.
223 This directory is also used to store certificates that were added to or
224 modified in the system trust store by <xref linkend="p11-kit"/> so that
225 trust values are maintained across upgrades. Files in this directory must
226 be in the <application>OpenSSL</application> trusted certificate format.
227 Certificates imported using the <command>trust</command> utility from
228 <xref linkend="p11-kit"/> will utilize the x509 Extended Key Usage values
229 to assign default trust values for the system anchors.
230 </para>
231
232 <para>If you need to override trust values, or otherwise need to create
233 an <application>OpenSSL</application> trusted certificate manually
234 from a regular PEM encoded file, you need to add trust arguments to the
235 <command>openssl</command> command, and create a new certificate. For
236 example, using the <ulink url="http://www.cacert.org/">CAcert</ulink>
237 roots, if you want to trust both for all three roles, the following
238 commands will create appropriate OpenSSL trusted certificates (run as
239 the <systemitem class="username">root</systemitem> user after <xref
240 linkend="wget"/> is installed):
241 </para>
242
243<screen role="nodump"><userinput>wget http://www.cacert.org/certs/root.crt &amp;&amp;
244wget http://www.cacert.org/certs/class3.crt &amp;&amp;
245openssl x509 -in root.crt -text -fingerprint -setalias "CAcert Class 1 root" \
246 -addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
247 > /etc/ssl/local/CAcert_Class_1_root.pem &amp;&amp;
248openssl x509 -in class3.crt -text -fingerprint -setalias "CAcert Class 3 root" \
249 -addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
250 > /etc/ssl/local/CAcert_Class_3_root.pem &amp;&amp;
251/usr/sbin/make-ca -r</userinput></screen>
252
253 <bridgehead renderas="sect3">Overriding Mozilla Trust</bridgehead>
254
255 <para>
256 Occasionally, there may be instances where you don't agree with
257 Mozilla's inclusion of a particular certificate authority. If you'd like
258 to override the default trust of a particular CA, simply create a copy of
259 the existing certificate in <filename
260 class="directory">/etc/ssl/local</filename> with different trust
261 arguments. For example, if you'd like to distrust the
262 "Makebelieve_CA_Root" file, run the following commands:
263 </para>
264
265<screen role="nodump"><userinput>openssl x509 -in /etc/ssl/certs/Makebelieve_CA_Root.pem \
266 -text \
267 -fingerprint \
268 -setalias "Disabled Makebelieve CA Root" \
269 -addreject serverAuth \
270 -addreject emailProtection \
271 -addreject codeSigning \
272 > /etc/ssl/local/Disabled_Makebelieve_CA_Root.pem &amp;&amp;
273/usr/sbin/make-ca -r</userinput></screen>
274
275 </sect2>
276
277 <sect2 role="configuration" id="make-ca-python">
278 <title>Using make-ca with Python3</title>
279
280 <para>
281 When <application>Python3</application> was installed in LFS it included
282 the <application>pip3</application> module with vendored certificates
283 from the <application>Certifi</application> module. That was necessary,
284 but it means that whenever <command>pip3</command> is used it can reference
285 those certificates, primarily when creating a virtual environment or when
286 installing a module with all its wheel dependencies in one go.
287 </para>
288
289 <para>
290 It is generally considered that the System Administrator should be in
291 charge of which certificates are available. Now that <xref
292 linkend="make-ca"/> and <xref linkend="p11-kit"/> have been installed and
293 <application>make-ca</application> has been configured, it is possible to
294 make <command>pip3</command> use the system certificates.
295 </para>
296
297 <para>
298 The vendored certificates installed in LFS are a snapshot from when the
299 pulled-in version of <application>Certifi</application> was created. If
300 you regularly update the system certificates, the vendored version will
301 become out of date.
302 </para>
303
304 <para>
305 To use the system certificates in <application>Python3</application> you
306 should set <envar>_PIP_STANDALONE_CERT</envar> to point to them, e.g for
307 the <application>bash</application> shell:
308 </para>
309
310<screen><userinput>export _PIP_STANDALONE_CERT=/etc/pki/tls/certs/ca-bundle.crt</userinput></screen>
311
312 <warning>
313 <para>
314 If you have created virtual environments, for example when testing modules,
315 and those include the <application>Requests</application> and
316 <application>Certifi</application> modules in <filename
317 class="directory">~/.local/lib/python3.11/</filename> then those local
318 modules will be used instead of the system certificates unless you
319 remove the local modules.
320 </para>
321 </warning>
322
323 <para>
324 To use the system certificates in <application>Python3</application> with
325 the BLFS profiles add the following variable to your system or personal
326 profiles:
327 </para>
328
329<screen role="root"><userinput>cat &gt; /etc/profile.d/pythoncerts.sh &lt;&lt; "EOF"
330<literal># Begin /etc/profile.d/pythoncerts.sh
331
332export _PIP_STANDALONE_CERT=/etc/pki/tls/certs/ca-bundle.crt
333
334# End /etc/profile.d/pythoncerts.sh</literal>
335EOF</userinput></screen>
336
337 </sect2>
338
339 <sect2 role="content">
340 <title>Contents</title>
341
342 <segmentedlist>
343 <segtitle>Installed Programs</segtitle>
344 <segtitle>Installed Directories</segtitle>
345
346 <seglistitem>
347 <seg>make-ca</seg>
348 <seg>/etc/ssl/{certs,local} and
349 /etc/pki/{nssdb,anchors,tls/{certs,java}}</seg>
350 </seglistitem>
351 </segmentedlist>
352
353 <variablelist>
354 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
355 <?dbfo list-presentation="list"?>
356 <?dbhtml list-presentation="table"?>
357
358 <varlistentry id="make-ca-bin">
359 <term><command>make-ca</command></term>
360 <listitem>
361 <para>
362 is a shell script that adapts a current version of
363 <filename>certdata.txt</filename>, and prepares it for use
364 as the system trust store
365 </para>
366 <indexterm zone="make-ca make-ca">
367 <primary sortas="b-make-ca">make-ca</primary>
368 </indexterm>
369 </listitem>
370 </varlistentry>
371 </variablelist>
372
373 </sect2>
374
375</sect1>
Note: See TracBrowser for help on using the repository browser.