source: postlfs/security/make-ca.xml@ 559ee8a

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 559ee8a was 559ee8a, checked in by Ken Moffat <ken@…>, 6 years ago

Make make-ca work with openssl-1.1.0h.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@20041 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 10.3 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.3 SBU (with all runtime deps)">
11
12 <!ENTITY make-ca-download "https://github.com/djlucas/make-ca/archive/v&make-ca-version;/make-ca-&make-ca-version;.tar.gz">
13 <!ENTITY make-ca-size "36 KB">
14 <!ENTITY make-ca-md5sum "4f180b9bf3b11f29d6a79e6022aeae23">
15]>
16
17<sect1 id="make-ca" xreflabel="make-ca-&make-ca-version;">
18 <?dbhtml filename="make-ca.html"?>
19
20 <sect1info>
21 <othername>$LastChangedBy$</othername>
22 <date>$Date$</date>
23 </sect1info>
24
25 <title>make-ca-&make-ca-version;</title>
26 <indexterm zone="make-ca">
27 <primary sortas="a-make-ca">make-ca</primary>
28 </indexterm>
29
30 <sect2 role="package">
31 <title>Introduction to make-ca</title>
32
33 <para>
34 Public Key Infrastructure (PKI) is a method to validate the authenticity
35 of an otherwise unknown entity across untrusted networks. PKI works by
36 establishing a chain of trust, rather than trusting each individual host
37 or entity explicitly. In order for a certificate presented by a remote
38 entity to be trusted, that certificate must present a complete chain of
39 certificates that can be validated using the root certificate of a
40 Certificate Authority (CA) that is trusted by the local machine.
41 </para>
42
43 <para>
44 Establishing trust with a CA involves validating things like company
45 address, ownership, contact information, etc., and ensuring that the CA
46 has followed best practices, such as undergoing periodic security audits
47 by independent investigators and maintaining an always available
48 certificate revocation list. This is well outside the scope of BLFS (as
49 it is for most Linux distributions). The certificate store provided here
50 is taken from the Mozilla Foundation, who have established very strict
51 inclusion policies described <ulink
52 url="https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/">here</ulink>.
53 </para>
54
55 &lfs82_checked;
56
57 <bridgehead renderas="sect3">Package Information</bridgehead>
58 <itemizedlist spacing="compact">
59 <listitem>
60 <para>Download (HTTP): <ulink url="&make-ca-download;"/></para>
61 </listitem>
62 <listitem>
63 <para>Download size: &make-ca-size;</para>
64 </listitem>
65 <listitem>
66 <para>Download MD5 Sum: &make-ca-md5sum;</para>
67 </listitem>
68 <listitem>
69 <para>Estimated disk space required: &make-ca-buildsize;</para>
70 </listitem>
71 <listitem>
72 <para>Estimated build time: &make-ca-time;</para>
73 </listitem>
74 </itemizedlist>
75
76 <bridgehead renderas="sect3">make-ca Dependencies</bridgehead>
77<!--
78 <bridgehead renderas="sect4">Required</bridgehead>
79 <para role="required"><xref linkend="openssl"/></para>
80-->
81 <bridgehead renderas="sect4">Optional (runtime)</bridgehead>
82 <para role="optional">
83 <xref role="runtime" linkend="java"/> or
84 <xref role="runtime" linkend="openjdk"/>,
85 <xref role="runtime" linkend="nss"/>, and
86 <xref role="runtime" linkend="p11-kit"/>
87 </para>
88
89 <para condition="html" role="usernotes">User Notes:
90 <ulink url='&blfs-wiki;/make-ca'/></para>
91 </sect2>
92
93 <sect2 role="installation">
94 <title>Installation of make-ca</title>
95
96 <para>The <application>make-ca</application> script will download and
97 process the certificates included in the <filename>certdata.txt</filename>
98 file for use in multiple certificate stores (if the associated applications
99 are present on the system). Additionally, any local certificates stored in
100 <filename>/etc/ssl/local</filename> will be imported to the certificate
101 stores. Certificates in this directory should be stored as PEM encoded
102 <application>OpenSSL</application> trusted certificates.</para>
103
104 <para>To create an <application>OpenSSL</application> trusted certificate
105 from a regular PEM encoded file, you need to add trust arguments to the
106 <command>openssl</command> command, and create a new certificate. There are
107 three trust types that are recognized by the
108 <application>make-ca</application> script, SSL/TLS, S/Mime, and code
109 signing. For example, using the
110 <ulink url="http://www.cacert.org/">CAcert</ulink> roots, if you want to
111 trust both for all three roles, the following commands will create
112 appropriate OpenSSL trusted certificates (run as the <systemitem
113 class="username">root</systemitem> user):</para>
114
115<screen role="nodump"><userinput>install -vdm755 /etc/ssl/local &amp;&amp;
116wget http://www.cacert.org/certs/root.crt &amp;&amp;
117wget http://www.cacert.org/certs/class3.crt &amp;&amp;
118openssl x509 -in root.crt -text -fingerprint -setalias "CAcert Class 1 root" \
119 -addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
120 > /etc/ssl/local/CAcert_Class_1_root.pem &amp;&amp;
121openssl x509 -in class3.crt -text -fingerprint -setalias "CAcert Class 3 root" \
122 -addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
123 > /etc/ssl/local/CAcert_Class_3_root.pem</userinput></screen>
124
125 <para>If one of the three trust arguments is omitted, the certificate is
126 neither trusted, nor rejected for that role. Clients that use
127 <application>OpenSSL</application> or <application>NSS</application>
128 encountering this certificate will present a warning to the user. Clients
129 using <application>GnuTLS</application> without
130 <application>p11-kit</application> support are not aware of trusted
131 certificates. To include this CA into the ca-bundle.crt (used for
132 <application>GnuTLS</application>), it must have <envar>serverAuth</envar>
133 trust. Additionally, to explicitly disallow a certificate for a particular
134 use, replace the <parameter>-addtrust</parameter> flag with the
135 <parameter>-addreject</parameter> flag.</para>
136
137 <para>To install the various certificate stores, first install the
138 <application>make-ca</application> script into the correct location.
139 As the <systemitem class="username">root</systemitem> user:</para>
140
141<screen role="root"><userinput>make install</userinput></screen>
142
143 <para>As the <systemitem class="username">root</systemitem> user, download
144 and update the certificate stores with the following command:</para>
145
146 <note>
147 <para>If running the script a second time with the same version of
148 <filename>certdata.txt</filename>, for instance, to add additional stores
149 as the requisite software is installed, add the <parameter>-f</parameter>
150 switch to the command line. If packaging, run <command>make-ca
151 --help</command> to see all available command line options.</para>
152 </note>
153
154<screen role="root"><userinput>
155sed -e 's%= /etc/ssl;%= "/etc/ssl";%' \
156 -e 's%= /usr;%= "/usr";%' \
157 -i /usr/bin/c_rehash &amp;&amp;
158/usr/sbin/make-ca -g</userinput></screen>
159
160 <para>The <command>sed</command> command works around missing quotes in
161 <command>c_rehash</command> from openssl-1.1.0h and can be safely rerun
162 (the " inserted the first time will prevent matches on subsequent runs).</para>
163
164 <para>You should periodically update the store with the above command
165 either manually, or via a <phrase revision="sysv">cron job.</phrase>
166 <phrase revision="systemd">systemd timer. A timer is installed at
167 <filename>/etc/systemd/system/update-pki.timer</filename> that, if enabled,
168 will check for updates weekly.</phrase></para>
169
170 <para>The default <filename>certdata.txt</filename> file provided by make-ca
171 is obtained from the mozilla-release branch, and is modified to provide a
172 Mercurial revision. This will be the correct version for most
173 systems. There are, however, several other variants of the file available
174 for use that might be preferred for one reason or another, including the
175 files shipped with Mozilla products in this book. RedHat and OpenSUSE,
176 for instance, use the version included in <xref linkend="nss"/>. Additional
177 upstream downloads are available at the links below.</para>
178
179 <itemizedlist spacing="compact">
180 <listitem>
181 <para>Mozilla Release (the version provided by BLFS):
182 <ulink url="&certhost;releases/mozilla-release/raw-file/default/security/nss&certpath;"/>
183 </para>
184 </listitem>
185 <listitem>
186 <para>NSS (this is the latest available version):
187 <ulink url="&certhost;projects/nss/raw-file/tip&certpath;"/>
188 </para>
189 </listitem>
190 <listitem>
191 <para>Mozilla Central:
192 <ulink url="&certhost;mozilla-central/raw-file/default/security/nss&certpath;"/>
193 </para>
194 </listitem>
195 <listitem>
196 <para>Mozilla Beta:
197 <ulink url="&certhost;releases/mozilla-beta/raw-file/default/security/nss&certpath;"/>
198 </para>
199 </listitem>
200 <listitem>
201 <para>Mozilla Aurora:
202 <ulink url="&certhost;releases/mozilla-aurora/raw-file/default/security/nss&certpath;"/>
203 </para>
204 </listitem>
205 </itemizedlist>
206
207 </sect2>
208
209 <sect2 role="content">
210 <title>Contents</title>
211
212 <segmentedlist>
213 <segtitle>Installed Programs</segtitle>
214 <segtitle>Installed Libraries</segtitle>
215 <segtitle>Installed Directories</segtitle>
216
217 <seglistitem>
218 <seg>make-ca</seg>
219 <seg>None</seg>
220 <seg>/etc/ssl/{certs,java,local} and /etc/pki/{nssdb,anchors}</seg>
221 </seglistitem>
222 </segmentedlist>
223
224 <variablelist>
225 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
226 <?dbfo list-presentation="list"?>
227 <?dbhtml list-presentation="table"?>
228
229 <varlistentry id="make-ca-bin">
230 <term><command>make-ca</command></term>
231 <listitem>
232 <para>is a shell script that adapts a current version of
233 <filename>certdata.txt</filename>, and prepares it for use
234 as the system certificate store.</para>
235 <indexterm zone="make-ca make-ca">
236 <primary sortas="b-make-ca">make-ca</primary>
237 </indexterm>
238 </listitem>
239 </varlistentry>
240 </variablelist>
241
242 </sect2>
243</sect1>
Note: See TracBrowser for help on using the repository browser.