]> git.proxmox.com Git - swtpm.git/blame - man/man8/swtpm_setup.pod
swtpm_setup: Add support for checking for TPM 1.2 and TPM 2 support
[swtpm.git] / man / man8 / swtpm_setup.pod
CommitLineData
e46a2b66
SB
1=head1 NAME
2
0dd19b92 3swtpm_setup - Swtpm tool to simulate the manufacturing of a TPM 1.2 or 2.0
e46a2b66
SB
4
5=head1 SYNOPSIS
6
7B<swtpm_setup [OPTIONS]>
8
9=head1 DESCRIPTION
10
2bc601bb 11B<swtpm_setup> is a tool that prepares the initial state for a libtpms-based
e46a2b66
SB
12TPM.
13
14The following options are supported:
15
16=over 4
17
18=item B<--runas <userid>>
19
aab15ef3 20Use this userid to run swtpm_setup as. Only 'root' can use this option.
e46a2b66
SB
21
22=item B<--config <file>>
23
24Path to configuration file containing the tool to use for creating
25certificates; see also B<swtpm_setup.conf>
26
55caf371 27If this parameter is not provided, the default configuration file
0dd19b92
SB
28will be used. The search order for the default configuration file is
29as follows. If the environment variable XDG_CONFIG_HOME is set,
30${XDG_CONFIG_HOME}/swtpm_setup.conf will be used if available, otherwise if
31the environment variable HOME is set, ${HOME}/swtpm_setup.conf
32will be used if available. If none of the previous ones are available, /etc/swtpm_setup.conf
33will be used.
55caf371 34
3aa53709 35=item B<--tpm-state <dir>> or B<--tpmstate <dir>>
e46a2b66
SB
36
37Path to a directory where the TPM's state will be written into;
38this is a mandatory argument
39
5007f2d0 40=item B<--tpm <path to executable>>
e46a2b66
SB
41
42Path to the TPM executable; this is an optional argument and
5007f2d0 43by default the swtpm executable found in the PATH will be used.
e46a2b66 44
15226ad9
SB
45=item B<--tpm2>
46
47Do setup on a TPM 2; by default a TPM 1.2 is setup.
48
e46a2b66
SB
49=item B<--createek>
50
0dd19b92 51Create an endorsement key (EK).
e46a2b66 52
15226ad9
SB
53=item B<--allow-signing>
54
55Create an EK that can sign. This option requires --tpm2.
56
ef1407f5
SB
57This option will create a non-standard EK. When re-creating the EK, TPM 2
58tools have to use the EK Template that is witten at an NV index corresponding
59to the created EK (e.g., NV index 0x01c00004 for RS 2048 EK). Otherwise the
60tool-created EK will not correspond to the actual key being used or the
61modulus shown in the EK certificate.
62
68332550
SB
63Note that the TCG specification "EK Credential Profile For TPM Family 2.0; Level 0"
64suggests in its section on "EK Usage" that "the Endorsement Key can be a
65created as a decryption or signing key." However, some platforms will
66not accept an EK as a signing key, or as a signing and encryption key, and
0dd19b92 67therefore this option should be used very carefully.
68332550 68
bab61563
SB
69=item B<--decryption>
70
71Create an EK that can be used for key encipherment. This is the default
72unless --allow-signing is passed. This option requires --tpm2.
73
08da93a9
SB
74=item B<--ecc>
75
76Create elliptic curve crypto (ECC) keys; by default RSA keys are generated.
77
e46a2b66
SB
78=item B<--take-ownership>
79
0dd19b92 80Take ownership; this option implies --createek. This option is only available for TPM 1.2.
e46a2b66
SB
81
82=item B<--ownerpass <password>>
83
0dd19b92 84Provide custom owner password; default is 'ooo'. This option is only available for TPM 1.2.
e46a2b66
SB
85
86=item B<--owner-well-known>
87
0dd19b92
SB
88Use a password of all zeros (20 bytes of zeros) as the owner password.
89This option is only available for TPM 1.2.
e46a2b66
SB
90
91=item B<--srkpass <password>>
92
0dd19b92 93Provide custom SRK password; default is 'sss'. This option is only available for TPM 1.2.
e46a2b66
SB
94
95=item B<--srk-well-known>
96
0dd19b92
SB
97Use a password of all zeros (20 bytes of zeros) as the SRK password.
98This option is only available for TPM 1.2.
e46a2b66
SB
99
100=item B<--create-ek-cert>
101
0dd19b92 102Create an EK certificate; this implies --createek.
e46a2b66
SB
103
104=item B<--create-platform-cert>
105
0dd19b92 106Create a platform certificate; this implies --create-ek-cert.
e46a2b66
SB
107
108=item B<--lock-nvram>
109
0dd19b92 110Lock NVRAM access to all NVRAM locations that were written to.
e46a2b66
SB
111
112=item B<--display>
113
114At the end display as much info as possible about the configuration
0dd19b92 115of the TPM.
e46a2b66
SB
116
117=item B<--logfile <logfile>>
118
119The logfile to log to. By default logging goes to stdout and stderr.
120
121=item B<--keyfile <keyfile>>
122
123The key file contains an ASCII hex key consisting of 32 hex digits with an
124optional leading '0x'. This is the key to be used by the TPM emulator
125for encrypting the state of the TPM.
126
e36d7915 127=item B<--keyfile-fd <file descriptor>>
ace4a684 128
e36d7915 129Like B<--keyfile> but the key will be read from the file descriptor.
ace4a684 130
e46a2b66
SB
131=item B<--pwdfile <passphrase file>>
132
ace4a684 133The passphrase file contains a passphrase from which the TPM emulator
755881ba 134will derive the encryption key from and use the key for encrypting the TPM
e46a2b66
SB
135state.
136
ace4a684
SB
137=item B<--pwdfile-fd <file descriptor>>
138
139Like B<--pwdfile> but the passphrase will be read from the file descriptor.
140
2e260468
SB
141=item B<--ciper <cipher>>
142
143The cipher may be either aes-cbc or aes-128-cbc for 128 bit AES encryption,
144or aes-256-cbc for 256 bit AES encryption. The same cipher must be used
145on the I<swtpm> command line later on.
146
eff9cc16
SB
147=item B<--overwrite>
148
149Overwrite existing TPM state. All previous state will be erased.
150If this option is not given and an existing state file is found, an error
151code is returned.
152
153=item B<--not-overwrite>
154
2bc601bb 155Do not overwrite existing TPM state. If existing TPM state is found, the
eff9cc16
SB
156program ends without an error.
157
a8bc74fd
SB
158=item B<--vmid <VM ID>>
159
160Optional VM ID that can be used to keep track of certificates issued
026a2efe 161for VMs (or containers). This parameter will be passed through to the tool
a8bc74fd
SB
162used for creating the certificates and may be required by that tool.
163
9f4d8af2
SB
164=item B<--pcr-banks <PCR banks>>
165
166Optional comma-separated list of PCR banks to activate. Providing '-'
2bc601bb 167allows a user to skip the selection and activates all PCR banks. By default
9f4d8af2
SB
168the sha1 and sha256 banks are activated.
169
e2951df7
SB
170=item B<--swtpm_ioctl <executable>>
171
172Pass the path to the swtpm_ioctl executable. By default the swtpm_ioctl
173in the PATH is used.
174
79edd90c
SB
175=item B<--tcsd-system-ps-file <file>>
176
cc410ca9 177This option is deprecated and has no effect (since v0.4).
79edd90c 178
3392e3ed 179=item B<--rsa-keysize <keysize>> (since v0.4)
6c5b7c2d
SB
180
181This option allows to pass the size of a TPM 2 RSA EK key, such as 2048
182or 3072. The supported keysizes for a TPM 2 can be queried for using
183the I<--print-capabilities> option. The default size is 2048 bits for
7dc24c2f
SB
184both TPM 1.2 and TPM 2. If 'max' is passed, the largest possible key
185size is used.
6c5b7c2d 186
166d7b42
SB
187=item B<--print-capabilities> (since v0.2)
188
80d7bb48
SB
189Print capabilities that were added to swtpm_setup after version 0.1.
190The output may contain the following:
166d7b42
SB
191
192 {
193 "type": "swtpm_setup",
194 "features": [
195 "cmdarg-keyfile-fd",
1974f2ce 196 "cmdarg-pwdfile-fd",
78559edd 197 "cmdarg-write-ek-cert-files",
80d7bb48 198 "tpm2-rsa-keysize-2048",
cc410ca9 199 "tpm2-rsa-keysize-3072",
3eac2477
SB
200 "tpm12-not-need-root",
201 "tpm-1.2",
202 "tpm-2.0"
55404e26
MAL
203 ],
204 "version": "0.7.0"
166d7b42
SB
205 }
206
55404e26
MAL
207The version field is available since 0.7.
208
166d7b42
SB
209The meaning of the feature verbs is as follows:
210
211=over 4
212
213=item B<cmdarg-key-fd>
214
215The I<--keyfile-fd> option is supported.
216
217=item B<cmdarg-pwd-fd>
218
219The I<--pwdfile-fd> option is supported.
220
78559edd
SB
221=item B<cmdarg-write-ek-cert-files>
222
223The I<--write-ek-cert-files> option is supported
224
80d7bb48
SB
225=item B<tpm2-rsa-keysize-2048, ...>
226
227The shown RSA key sizes are supported for a TPM 2's EK key. If none of the
228tpm2-rsa-keysize verbs is shown then only RSA 2048 bit keys are supported.
229
cc410ca9
SB
230=item B<tpm12-not-need-root> (since 0.4.0)
231
232This option implies that any user can setup a TPM 1.2. Previously only root
233or the 'tss' user, depending on configuration and availability of this account,
234could do that.
235
3eac2477
SB
236=item B<tpm-1.2> (since 0.7)
237
238TPM 1.2 setup is supported (libtpms is compiled with TPM 1.2 support).
239
240==item B<tpm-2.0> (since 0.7)
241
242TPM 2 setup is supported (libtpms is compiled with TPM 2 support).
243
166d7b42
SB
244=back
245
78559edd
SB
246=item B<--write-ek-cert-files <directory>>
247
248This option causes endorsement key (EK) files to be written into the provided
249directory. The files contain the DER-formatted EKs that were written into the
250NVRAM locations of the TPM 1.2 or TPM 2. The EK files have the filename pattern
251of ek-<key type>.crt. Example for filenames are ek-rsa2048.crt, ek-rsa3072.crt,
252and ek-secp384r1.crt.
253
254The keys that are written for a TPM 2 may change over time as the default
255strength of the EK keys changes. This means that one should look for all
256files with the above filename pattern when looking for the EKs.
257
e46a2b66
SB
258=item B<--help, -h>
259
260Display the help screen
261
262=back
263
026a2efe
SB
264=head1 EXAMPLE USAGE
265
266To simulate manufacturing of a TPM, one would typically run the following command:
267
268 #> sudo swtpm_setup --tpmstate /tmp/mytpm1/ \
269 --create-ek-cert --create-platform-cert --lock-nvram
270
cc410ca9 271Note: since v0.4 TPM 1.2 setup does not require root rights anymore.
55caf371 272
cc410ca9 273Any user can also simulate the manufacturing of a TPM using the
3d5ae5e1 274swtpm_localca utility. The following example assumes that the user has
55caf371
SB
275set the environment variable XDG_CONFIG_HOME as follows (using bash for
276example):
277
278 export XDG_CONFIG_HOME=~/.config
279
280Note: The XDG_CONFIG_HOME variable is part of the XDG Base Directory
281Specification.
282
283The following configuration files need to be created:
284
285~/.config/swtpm_setup.conf:
286
287 # Program invoked for creating certificates
288 create_certs_tool= /usr/share/swtpm/swtpm-localca
289 create_certs_tool_config = ${XDG_CONFIG_HOME}/swtpm-localca.conf
290 create_certs_tool_options = ${XDG_CONFIG_HOME}/swtpm-localca.options
291
292~/.config/swtpm-localca.conf:
293
294 statedir = ${XDG_CONFIG_HOME}/var/lib/swtpm-localca
295 signingkey = ${XDG_CONFIG_HOME}/var/lib/swtpm-localca/signkey.pem
296 issuercert = ${XDG_CONFIG_HOME}/var/lib/swtpm-localca/issuercert.pem
297 certserial = ${XDG_CONFIG_HOME}/var/lib/swtpm-localca/certserial
298
299~/.config/swtpm-localca.options:
300
301 --platform-manufacturer Fedora
302 --platform-version 2.12
303 --platform-model QEMU
304
a12b09b1
SB
305Note: The tool swtpm-create-user-config-files can be used to create such
306files (with different content):
307
308 #> /usr/share/swtpm/swtpm-create-user-config-files
309 Writing /home/stefanb/.config/swtpm_setup.conf.
310 Writing /home/stefanb/.config/swtpm-localca.conf.
311 Writing /home/stefanb/.config/swtpm-localca.options.
312
55caf371
SB
313The following commands now create a TPM 2 with an EK and platform
314certificate. The state of the TPM 2 will be stored in the directory
315${XDG_CONFIG_HOME}/mytpm1.
316
317 #> mkdir -p ${XDG_CONFIG_HOME}/mytpm1
318 #> swtpm_setup --tpm2 --tpmstate ${XDG_CONFIG_HOME}/mytpm1 \
319 --create-ek-cert --create-platform-cert --lock-nvram
320
321
e46a2b66
SB
322=head1 SEE ALSO
323
324B<swtpm_setup.conf>
325
326=head1 REPORTING BUGS
327
0dd19b92 328Report bugs to Stefan Berger <stefanb@linux.ibm.com>