1sks(8) SKS OpenPGP Key server sks(8)
2
3
4
6 SKS - Synchronizing Key Server
7
9 sks [options] -debug
10
12 SKS is a OpenPGP keyserver whose goal is to provide easy to deploy,
13 decentralized, and highly reliable synchronization. That means that a
14 key submitted to one SKS server will quickly be distributed to all key
15 servers, and even wildly out-of-date servers, or servers that
16 experience spotty connectivity, can fully synchronize with rest of the
17 system.
18
19 The design of SKS is deliberately simple. The server consists of two
20 single-threaded processes. The first, "sks db", fulfills the normal
21 jobs associated with a public key server, such as answering web
22 requests. The only special functionality of "sks db" is that it keeps a
23 log summarizing the changes to the key database. "sks recon" does all
24 the work with respect to reconciling hosts databases. "sks recon" keeps
25 track of specialized summary information about the database, and can
26 use that information to efficiently determine the differences between
27 its database and that of another host.
28
30 Highly efficient and reliable reconciliation algorithm
31
32 Follows RFC2440 and RFC2440bis carefully - unlike PKS, SKS supports new
33 and old style packets, photoID packets, multiple subkeys, and pretty
34 much everything allowed by the RFCs.
35
36 Fully compatible with PKS system - can both send and receive syncs from
37 PKS servers, ensuring seamless connectivity.
38
39 Simple configuration: each host just needs a (partial) list of the
40 other participating key servers. Gossip is used to distribute
41 information without putting a heavy load an any one host.
42
43 Supports HKP/web-based querying, and soon-to-be-standard machine
44 readable indices
45
47 SKS binary command options are as follows:
48
49 db
50 Initiates database server.
51
52 recon
53 Initiates reconciliation server.
54
55 cleandb
56 Apply filters to all keys in database, fixing some common problems.
57
58 build
59 Build key database, including body of keys directly in database.
60
61 fastbuild -n [size] -cache [mbytes]
62 Build key database, doesn't include keys directly in database,
63 faster than build. -n specifies the number of keydump files to read
64 per pass when used with build and the multiple of 15,000 keys to be
65 read per pass when used with fastbuild. -cache specifies the
66 database cache to use in megabytes.
67
68 pbuild -cache [mbytes] -ptree_cache [mbytes]
69 Build prefix-tree database, used by reconciliation server, from key
70 database. Allows for specification of cache for key database and
71 for ptree database.
72
73 dump numkeys dumpdir <filename-prefix>
74 Create a raw dump of the keys in the database. The dump is split
75 into multiple files; the numkeys parameter determines the number of
76 keys dumped in each file. The optional filename-prefix is prepended
77 to the dump file names. Without it the dump files are named
78 0000.pgp, 0001.pgp,...
79
80 merge
81 Adds key from key files to existing database.
82
83 drop
84 Drops key from database.
85
86 update_subkeys [-n # of updates / 1000]
87 Updates subkey keyid index to include all current keys. Only useful
88 when upgrading versions 1.0.4 or before of SKS.
89
90 version
91 prints SKS version and linked version of Berkeley DB to stdout
92
93 help
94 Prints the help message.
95
97 You won't need most of the options below for normal operation. These
98 options can be given in basedir/sksconf or as command line option for
99 the sks binary.
100
101 -debug
102 Debugging mode.
103
104 -debuglevel
105 Debugging level -- sets verbosity of logging.
106
107 -q
108 Number of bits defining a bin.
109
110 -mbar
111 Number of errors that can be corrected in one shot.
112
113 -seed
114 Seed used by RNG.
115
116 -hostname
117 Current hostname.
118
119 -nodename
120 Current nodename.
121
122 -d
123 Number of keys to drop at random when synchronizing.
124
125 -n
126 Number of keydump files to load at once.
127
128 -max_internal_matches
129 Maximum number of matches for most specific word in a multi-word
130 search.
131
132 -max_matches
133 Maximum number of matches that will be returned from a query.
134
135 -max_uid_fetches
136 Maximum number of uid fetches performed in a verbose index query.
137
138 -pagesize
139 Pagesize in 512 byte chucks for key db.
140
141 -keyid_pagesize
142 Pagesize in 512 byte chucks for keyid db.
143
144 -meta_pagesize
145 Pagesize in 512 byte chucks for metadata db.
146
147 -subkeyid_pagesize
148 Pagesize in 512 byte chucks for subkeyid db.
149
150 -time_pagesize
151 Pagesize in 512 byte chucks for time db.
152
153 -tqueue_pagesize
154 Pagesize in 512 byte chucks for tqueue db.
155
156 -word_pagesize
157 Pagesize in 512 byte chunks for word db.
158
159 -cache
160 Cache size in megs for key db.
161
162 -ptree_pagesize
163 Pagesize in 512 byte chunks for prefix tree db.
164
165 -ptree_cache
166 Cache size in megs for prefix tree db.
167
168 -baseport
169 Set base port number.
170
171 -recon_port
172 Set recon port number.
173
174 -recon_address
175 Set recon binding addresses. Can be a list of whitespace separated
176 IP addresses or domain names.
177
178 -hkp_port
179 Set hkp port number.
180
181 -hkp_address
182 Set hkp binding addresses. Can be a list of whitespace separated
183 IP addresses or domain names.
184
185 -use_port_80
186 Have the HKP interface listen on port 80, as well as the hkp_port.
187
188 -basedir
189 Set base directory.
190
191 -stdoutlog
192 Send log messages to stdout instead of log file.
193
194 -diskptree
195 Use a disk-based ptree implementation. Slower, but requires far
196 less memory.
197
198 -nodiskptree
199 Use in-mem ptree.
200
201 -max_ptree_nodes
202 Maximum number of allowed ptree nodes. Only meaningful if
203 -diskptree is set.
204
205 -prob
206 Set probability. Used for testing code only.
207
208 -recon_sync_interval
209 Set sync interval for reconserver.
210
211 -gossip_interval
212 Set time between gossips in minutes.
213
214 -dontgossip
215 Don't gossip automatically. Host will still respond to requests
216 from other hosts.
217
218 -db_sync_interval
219 Set sync interval for dbserver.
220
221 -checkpoint_interval
222 Time period between checkpoints.
223
224 -recon_checkpoint_interval
225 Time period between checkpoints for reconserver.
226
227 -ptree_thresh_mult
228 Multiple of thresh which specifies minimum node size in prefix
229 tree.
230
231 -recon_thresh_mult
232 Multiple of thresh which specifies minimum node size that is
233 included in reconciliation.
234
235 -max_recover
236 Maximum number of differences to recover in one round.
237
238 -http_fetch_size
239 Number of keys for reconserver to fetch from dbserver in one go.
240
241 -wserver_timeout
242 Timeout in seconds for webserver requests.
243
244 -reconciliation_timeout
245 Timeout for reconciliation runs in minutes.
246
247 -stat_hour
248 Hour at which to run database statistics.
249
250 -initial_stat
251 Runs database statistics calculation on boot.
252
253 -reconciliation_config_timeout
254 Set timeout in seconds for initial exchange of config info in
255 reconciliation.
256
257 -missing_keys_timeout
258 Timeout in seconds for get_missing_keys.
259
260 -command_timeout
261 Timeout in seconds for commands set over command socket.
262
263 -sendmail_cmd
264 Command used for sending mail.
265
266 -from_addr
267 From address used in synchronization emails used to communicate
268 with PKS.
269
270 -dump_new_only
271 When doing a database dump, only dump new keys, not keys already
272 contained in a keydump file.
273
274 -max_outstanding_recon_requests
275 Maximum number of outstanding requests in reconciliation.
276
277 -membership_reload_interval
278 Maximum interval (in hours) at which membership file is reloaded.
279
280 -disable_mailsync
281 Disable sending of PKS mailsync messages. ONLY FOR STANDALONE
282 SERVERS! THIS IS THE MECHANIASM FOR SENDING UPDATES TO NON-SKS
283 SERVERS.
284
285 -disable_log_diffs
286 Disable logging of recent hashset diffs.
287
288 -server_contact
289 Set OpenPGP KeyID of the server contact
290
291 --help, -help
292 -stdin
293 Read keyids from stdin (sksclient only)
294
295 Displays list of options.
296
298 Information about important files located in your SKS basedir.
299
300 bin/sks
301 The main SKS executable.
302
303 bin/sks_add_mail
304 The executable responsible for parsing incoming mails from PKS key
305 servers.
306
307 bin/sks_build.sh
308 Script to generate an initial database.
309
310 mailsync
311 The mailsync should contains a list of email addresses of PKS
312 keyservers. This file is important, because it ensures that keys
313 submitted directly to an SKS keyserver are also forwarded to PKS
314 keyservers. IMPORTANT : don't add someone to your mailsync file
315 without getting their permission first!
316
317 membership
318 With SKS, two hosts can efficiently compare their databases then
319 repair whatever differences are found. In order to set up
320 reconciliation, you first need to find other SKS servers that will
321 agree to gossip with you. The hostname and port of the server that
322 has agreed to do so should be added to this file.
323
324 sksconf
325 The configuration file for your SKS server.
326
328 membership
329 keyserver.ahost.org 11370 # Comments are allowed
330 keyserver.foo.org 11370 # Another host with default ports
331
332 sksconf
333 membership_reload_interval: 1
334 initial_stat:
335 hostname: keyserver.example.com
336 from_addr: pgp-public-keys@keyserver.example.com
337
338 Procmail
339 PATH=/path/of/sks/exectuables
340 :0
341 * ^Subject: incremental
342 | /path/of/sks_add_mail /path/to/sks/directory
343
344 /etc/aliases
345 pgp-public-keys: "|/path/of/sks_add_mail /path/to/sks/directory"
346
348 The SKS website is located at https://bitbucket.org/skskeyserver/sks-keyserver/.
349
351 The first draft was written by Thomas Sjogren
352 <thomas@northernsecurity.net>.
353
354
355
3560.1 2014-05-03 sks(8)