Blame


1 30f6ae14 2005-02-13 devnull .TH RSA 1
2 a784b110 2005-02-13 devnull .SH NAME
3 45993349 2005-02-13 devnull dsagen, rsagen, rsafill, asn12dsa, asn12rsa, dsa2pub, rsa2csr, rsa2pub, dsa2ssh, rsa2ssh, rsa2x509 \- generate and format dsa and rsa keys
4 a784b110 2005-02-13 devnull .SH SYNOPSIS
5 a784b110 2005-02-13 devnull .PP
6 a784b110 2005-02-13 devnull .B dsagen
7 a784b110 2005-02-13 devnull [
8 a784b110 2005-02-13 devnull .B -t
9 a784b110 2005-02-13 devnull .I tag
10 a784b110 2005-02-13 devnull ]
11 a784b110 2005-02-13 devnull .PP
12 a784b110 2005-02-13 devnull .B rsagen
13 a784b110 2005-02-13 devnull [
14 a784b110 2005-02-13 devnull .B -b
15 a784b110 2005-02-13 devnull .I nbits
16 a784b110 2005-02-13 devnull ]
17 a784b110 2005-02-13 devnull [
18 a784b110 2005-02-13 devnull .B -t
19 a784b110 2005-02-13 devnull .I tag
20 a784b110 2005-02-13 devnull ]
21 a784b110 2005-02-13 devnull .PP
22 a784b110 2005-02-13 devnull .B rsafill
23 a784b110 2005-02-13 devnull [
24 a784b110 2005-02-13 devnull .I file
25 a784b110 2005-02-13 devnull ]
26 a784b110 2005-02-13 devnull .PP
27 a784b110 2005-02-13 devnull .B asn12dsa
28 a784b110 2005-02-13 devnull [
29 a784b110 2005-02-13 devnull .B -t
30 a784b110 2005-02-13 devnull .I tag
31 a784b110 2005-02-13 devnull ]
32 a784b110 2005-02-13 devnull [
33 a784b110 2005-02-13 devnull .I file
34 a784b110 2005-02-13 devnull ]
35 a784b110 2005-02-13 devnull .PP
36 a784b110 2005-02-13 devnull .B asn12rsa
37 a784b110 2005-02-13 devnull [
38 a784b110 2005-02-13 devnull .B -t
39 a784b110 2005-02-13 devnull .I tag
40 a784b110 2005-02-13 devnull ]
41 a784b110 2005-02-13 devnull [
42 a784b110 2005-02-13 devnull .I file
43 a784b110 2005-02-13 devnull ]
44 a784b110 2005-02-13 devnull .PP
45 a784b110 2005-02-13 devnull .B dsa2pub
46 a784b110 2005-02-13 devnull [
47 a784b110 2005-02-13 devnull .I file
48 a784b110 2005-02-13 devnull ]
49 a784b110 2005-02-13 devnull .PP
50 a784b110 2005-02-13 devnull .B rsa2pub
51 a784b110 2005-02-13 devnull [
52 a784b110 2005-02-13 devnull .I file
53 a784b110 2005-02-13 devnull ]
54 a784b110 2005-02-13 devnull .PP
55 a784b110 2005-02-13 devnull .B dsa2ssh
56 a784b110 2005-02-13 devnull [
57 a784b110 2005-02-13 devnull .I file
58 a784b110 2005-02-13 devnull ]
59 a784b110 2005-02-13 devnull .PP
60 a784b110 2005-02-13 devnull .B rsa2ssh
61 a784b110 2005-02-13 devnull [
62 a784b110 2005-02-13 devnull .B -2
63 a784b110 2005-02-13 devnull ]
64 a784b110 2005-02-13 devnull [
65 a784b110 2005-02-13 devnull .I file
66 a784b110 2005-02-13 devnull ]
67 a784b110 2005-02-13 devnull .PP
68 a784b110 2005-02-13 devnull .B rsa2x509
69 a784b110 2005-02-13 devnull [
70 a784b110 2005-02-13 devnull .B -e
71 a784b110 2005-02-13 devnull .I expiretime
72 45993349 2005-02-13 devnull ]
73 45993349 2005-02-13 devnull .I certinfo
74 45993349 2005-02-13 devnull [
75 45993349 2005-02-13 devnull .I file
76 a784b110 2005-02-13 devnull ]
77 45993349 2005-02-13 devnull .PP
78 45993349 2005-02-13 devnull .B rsa2csr
79 a784b110 2005-02-13 devnull .I certinfo
80 a784b110 2005-02-13 devnull [
81 a784b110 2005-02-13 devnull .I file
82 a784b110 2005-02-13 devnull ]
83 a784b110 2005-02-13 devnull .SH DESCRIPTION
84 a784b110 2005-02-13 devnull Plan 9 represents DSA and RSA keys as attribute-value pair lists
85 a784b110 2005-02-13 devnull prefixed with the string
86 a784b110 2005-02-13 devnull .BR key ;
87 a784b110 2005-02-13 devnull this is the generic key format used by
88 d32deab1 2020-08-16 rsc .MR factotum (4) .
89 a784b110 2005-02-13 devnull A full DSA private key has the following attributes:
90 a784b110 2005-02-13 devnull .TP
91 a784b110 2005-02-13 devnull .B proto
92 a784b110 2005-02-13 devnull must be
93 a784b110 2005-02-13 devnull .B dsa
94 a784b110 2005-02-13 devnull .TP
95 a784b110 2005-02-13 devnull .B p
96 a784b110 2005-02-13 devnull prime public modulus
97 a784b110 2005-02-13 devnull .TP
98 a784b110 2005-02-13 devnull .B q
99 a784b110 2005-02-13 devnull prime group order; divides
100 a784b110 2005-02-13 devnull .BR p -1
101 a784b110 2005-02-13 devnull .TP
102 a784b110 2005-02-13 devnull .B alpha
103 a784b110 2005-02-13 devnull group generator
104 a784b110 2005-02-13 devnull .TP
105 a784b110 2005-02-13 devnull .B key
106 a784b110 2005-02-13 devnull .BR alpha ^ !secret
107 a784b110 2005-02-13 devnull mod
108 a784b110 2005-02-13 devnull .B p
109 a784b110 2005-02-13 devnull .TP
110 a784b110 2005-02-13 devnull .B !secret
111 a784b110 2005-02-13 devnull the secret exponent
112 a784b110 2005-02-13 devnull .PD
113 a784b110 2005-02-13 devnull .PP
114 a784b110 2005-02-13 devnull A full RSA private key has the following attributes:
115 a784b110 2005-02-13 devnull .TP
116 a784b110 2005-02-13 devnull .B proto
117 a784b110 2005-02-13 devnull must be
118 a784b110 2005-02-13 devnull .B rsa
119 a784b110 2005-02-13 devnull .TP
120 a784b110 2005-02-13 devnull .B size
121 a784b110 2005-02-13 devnull the number of significant bits in
122 a784b110 2005-02-13 devnull .B n
123 a784b110 2005-02-13 devnull .TP
124 a784b110 2005-02-13 devnull .B ek
125 a784b110 2005-02-13 devnull the encryption exponent
126 a784b110 2005-02-13 devnull .TP
127 a784b110 2005-02-13 devnull .B n
128 a784b110 2005-02-13 devnull the product of
129 a784b110 2005-02-13 devnull .B !p
130 a784b110 2005-02-13 devnull and
131 a784b110 2005-02-13 devnull .B !q
132 a784b110 2005-02-13 devnull .TP
133 a784b110 2005-02-13 devnull .B !dk
134 a784b110 2005-02-13 devnull the decryption exponent
135 a784b110 2005-02-13 devnull .TP
136 a784b110 2005-02-13 devnull .B !p
137 a784b110 2005-02-13 devnull a large prime
138 a784b110 2005-02-13 devnull .TP
139 a784b110 2005-02-13 devnull .B !q
140 a784b110 2005-02-13 devnull another large prime
141 a784b110 2005-02-13 devnull .TP
142 a784b110 2005-02-13 devnull .B "!kp\fR, \fL!kq\fR, \fL!c2
143 a784b110 2005-02-13 devnull parameters derived from the other attributes, cached to speed decryption
144 a784b110 2005-02-13 devnull .PD
145 a784b110 2005-02-13 devnull .LP
146 a784b110 2005-02-13 devnull All the numbers in both keys are in hexadecimal except RSA's
147 a784b110 2005-02-13 devnull .I size ,
148 a784b110 2005-02-13 devnull which is decimal.
149 a784b110 2005-02-13 devnull A public key omits the attributes beginning with
150 a784b110 2005-02-13 devnull .L ! .
151 a784b110 2005-02-13 devnull A key may have other attributes as well (for example, a
152 a784b110 2005-02-13 devnull .B service
153 a784b110 2005-02-13 devnull attribute identifying how this key is typically used),
154 a784b110 2005-02-13 devnull but to these utilities such attributes are merely comments.
155 a784b110 2005-02-13 devnull .PP
156 a784b110 2005-02-13 devnull For example, a very small (and thus insecure) private key and corresponding
157 a784b110 2005-02-13 devnull public key might be:
158 a784b110 2005-02-13 devnull .IP
159 a784b110 2005-02-13 devnull .EX
160 a784b110 2005-02-13 devnull key proto=rsa size=8 ek=7 n=8F !dk=67 !p=B !q=D !kp=3 !kq=7 !c2=6
161 a784b110 2005-02-13 devnull key proto=rsa size=8 ek=7 n=8F
162 a784b110 2005-02-13 devnull .EE
163 a784b110 2005-02-13 devnull .LP
164 a784b110 2005-02-13 devnull Note that the order of the attributes does not matter.
165 a784b110 2005-02-13 devnull .PP
166 a784b110 2005-02-13 devnull .I Dsagen
167 a784b110 2005-02-13 devnull prints a randomly generated DSA private key using the
168 a784b110 2005-02-13 devnull NIST-recommended algorithm.
169 a784b110 2005-02-13 devnull If
170 a784b110 2005-02-13 devnull .I tag
171 a784b110 2005-02-13 devnull is specified, it is printed between
172 a784b110 2005-02-13 devnull .B key
173 a784b110 2005-02-13 devnull and
174 a784b110 2005-02-13 devnull .BR proto=dsa ;
175 a784b110 2005-02-13 devnull typically,
176 a784b110 2005-02-13 devnull .I tag
177 a784b110 2005-02-13 devnull is a sequence of attribute-value comments describing the key.
178 a784b110 2005-02-13 devnull .PP
179 a784b110 2005-02-13 devnull .I Rsagen
180 a784b110 2005-02-13 devnull prints a randomly generated RSA private key
181 a784b110 2005-02-13 devnull whose
182 a784b110 2005-02-13 devnull .B n
183 a784b110 2005-02-13 devnull has exactly
184 a784b110 2005-02-13 devnull .I nbits
185 a784b110 2005-02-13 devnull (default 1024)
186 a784b110 2005-02-13 devnull significant bits.
187 a784b110 2005-02-13 devnull .PP
188 a784b110 2005-02-13 devnull .I Rsafill
189 a784b110 2005-02-13 devnull reads a private key,
190 a784b110 2005-02-13 devnull recomputes the
191 a784b110 2005-02-13 devnull .BR !kp ,
192 a784b110 2005-02-13 devnull .BR !kq ,
193 a784b110 2005-02-13 devnull and
194 a784b110 2005-02-13 devnull .BR !c2
195 a784b110 2005-02-13 devnull attributes if they are missing,
196 a784b110 2005-02-13 devnull and prints a full key.
197 a784b110 2005-02-13 devnull .PP
198 a784b110 2005-02-13 devnull .I Asn12dsa
199 a784b110 2005-02-13 devnull reads an DSA private key stored as ASN.1
200 a784b110 2005-02-13 devnull encoded in the binary Distinguished Encoding Rules (DER)
201 a784b110 2005-02-13 devnull and prints a Plan 9 DSA key,
202 a784b110 2005-02-13 devnull inserting
203 a784b110 2005-02-13 devnull .I tag
204 a784b110 2005-02-13 devnull exactly as
205 a784b110 2005-02-13 devnull .I dsagen
206 a784b110 2005-02-13 devnull does.
207 a784b110 2005-02-13 devnull ASN.1/DER is a popular key format on Unix and Windows;
208 a784b110 2005-02-13 devnull it is often encoded in text form using the Privacy Enhanced Mail (PEM) format
209 a784b110 2005-02-13 devnull in a section labeled as an
210 a784b110 2005-02-13 devnull .RB `` DSA
211 a784b110 2005-02-13 devnull .B PRIVATE
212 a784b110 2005-02-13 devnull .BR KEY .''
213 a784b110 2005-02-13 devnull The command:
214 a784b110 2005-02-13 devnull .IP
215 a784b110 2005-02-13 devnull .EX
216 a784b110 2005-02-13 devnull pemdecode 'DSA PRIVATE KEY' | asn12dsa
217 a784b110 2005-02-13 devnull .EE
218 a784b110 2005-02-13 devnull .LP
219 a784b110 2005-02-13 devnull extracts the key section from a textual ASN.1/DER/PEM key
220 a784b110 2005-02-13 devnull into binary ASN.1/DER format and then
221 a784b110 2005-02-13 devnull converts it to a Plan 9 DSA key.
222 a784b110 2005-02-13 devnull .PP
223 a784b110 2005-02-13 devnull .I Asn12rsa
224 a784b110 2005-02-13 devnull is similar but operates on RSA keys.
225 a784b110 2005-02-13 devnull .PP
226 a784b110 2005-02-13 devnull .I Dsa2pub
227 a784b110 2005-02-13 devnull reads a Plan 9 DSA public or private key,
228 a784b110 2005-02-13 devnull removes the private attributes, and prints the resulting public key.
229 a784b110 2005-02-13 devnull Comment attribtes are preserved.
230 a784b110 2005-02-13 devnull .PP
231 a784b110 2005-02-13 devnull .I Rsa2pub
232 a784b110 2005-02-13 devnull is similar but operates on RSA keys.
233 a784b110 2005-02-13 devnull .PP
234 a784b110 2005-02-13 devnull .I Dsa2ssh
235 a784b110 2005-02-13 devnull reads a Plan 9 DSA public or private key and prints the
236 a784b110 2005-02-13 devnull public portion in the format used by SSH version 2 (version 1 did not support DSA).
237 a784b110 2005-02-13 devnull If the key has a
238 a784b110 2005-02-13 devnull .B comment
239 a784b110 2005-02-13 devnull attribute, that comment is appended to the key.
240 a784b110 2005-02-13 devnull .PP
241 a784b110 2005-02-13 devnull .I Rsa2ssh
242 a784b110 2005-02-13 devnull is similar but operates on RSA keys.
243 a784b110 2005-02-13 devnull It decides whether to print in version 1 or version 2
244 a784b110 2005-02-13 devnull format by inspecting the
245 a784b110 2005-02-13 devnull .B service
246 a784b110 2005-02-13 devnull attribute.
247 a784b110 2005-02-13 devnull .PP
248 a784b110 2005-02-13 devnull .I Dsa2ssh
249 a784b110 2005-02-13 devnull and
250 a784b110 2005-02-13 devnull .I rsa2ssh
251 a784b110 2005-02-13 devnull are useful for generating SSH's
252 a784b110 2005-02-13 devnull .B authorized_keys
253 a784b110 2005-02-13 devnull file.
254 a784b110 2005-02-13 devnull .PP
255 a784b110 2005-02-13 devnull .I Rsa2x509
256 a784b110 2005-02-13 devnull reads a Plan 9 RSA private key and writes a self-signed X.509 certificate
257 a784b110 2005-02-13 devnull encoded in ASN.1/DER format to standard output.
258 a784b110 2005-02-13 devnull (Note that ASN.1/DER X.509 certificates are different from ASN.1/DER private keys).
259 a784b110 2005-02-13 devnull The certificate uses the current time as its start time and expires
260 a784b110 2005-02-13 devnull .I expiretime
261 a784b110 2005-02-13 devnull seconds
262 a784b110 2005-02-13 devnull (default 3 years)
263 a784b110 2005-02-13 devnull later.
264 a784b110 2005-02-13 devnull It contains the public half of the key
265 a784b110 2005-02-13 devnull and includes
266 a784b110 2005-02-13 devnull .I certinfo
267 a784b110 2005-02-13 devnull as the issuer/subject string (also known as a ``Distinguished Name'').
268 a784b110 2005-02-13 devnull This info is typically in the form:
269 a784b110 2005-02-13 devnull .IP
270 a784b110 2005-02-13 devnull .EX
271 a784b110 2005-02-13 devnull C=US ST=NJ L=07974 O=Lucent OU='Bell Labs' CN=G.R.Emlin
272 a784b110 2005-02-13 devnull .EE
273 a784b110 2005-02-13 devnull .LP
274 a784b110 2005-02-13 devnull The X.509 ASN.1/DER format is often encoded in text using a PEM section
275 a784b110 2005-02-13 devnull labeled as a
276 a784b110 2005-02-13 devnull .RB `` CERTIFICATE .''
277 a784b110 2005-02-13 devnull The command:
278 a784b110 2005-02-13 devnull .IP
279 a784b110 2005-02-13 devnull .EX
280 a784b110 2005-02-13 devnull rsa2x509 'C=US OU=''Bell Labs''' file |
281 a784b110 2005-02-13 devnull pemencode CERTIFICATE
282 a784b110 2005-02-13 devnull .EE
283 a784b110 2005-02-13 devnull .LP
284 a784b110 2005-02-13 devnull generates such a textual certificate.
285 45993349 2005-02-13 devnull Applications that serve TLS-encrypted sessions
286 45993349 2005-02-13 devnull typically expect certificates in ASN.1/DER/PEM format.
287 45993349 2005-02-13 devnull .PP
288 45993349 2005-02-13 devnull .I Rsa2csr
289 45993349 2005-02-13 devnull is like
290 45993349 2005-02-13 devnull .I rsa2x509
291 45993349 2005-02-13 devnull but writes an X.509 certificate request.
292 a784b110 2005-02-13 devnull .SH EXAMPLES
293 45993349 2005-02-13 devnull Generate a fresh key and use it to start the Plan 9 TLS-enabled web server:
294 a784b110 2005-02-13 devnull .IP
295 a784b110 2005-02-13 devnull .EX
296 a784b110 2005-02-13 devnull rsagen -t 'service=tls owner=*' >key
297 a784b110 2005-02-13 devnull rsa2x509 'C=US CN=*.cs.bell-labs.com' key |
298 a784b110 2005-02-13 devnull pemencode CERTIFICATE >cert
299 a784b110 2005-02-13 devnull cat key >/mnt/factotum/ctl
300 a784b110 2005-02-13 devnull ip/httpd/httpd -c cert
301 a784b110 2005-02-13 devnull .EE
302 a784b110 2005-02-13 devnull .PP
303 a784b110 2005-02-13 devnull Generate a fresh set of SSH keys (only one is necessary),
304 a784b110 2005-02-13 devnull load them into factotum,
305 a784b110 2005-02-13 devnull and configure a remote Unix system to allow those keys for logins:
306 a784b110 2005-02-13 devnull .IP
307 a784b110 2005-02-13 devnull .EX
308 30f6ae14 2005-02-13 devnull rsagen -t 'service=ssh role=decrypt' >rsa1
309 30f6ae14 2005-02-13 devnull rsagen -t 'service=ssh-rsa role=sign' >rsa2
310 30f6ae14 2005-02-13 devnull dsagen -t 'service=ssh-dss role=sign' >dsa2
311 a784b110 2005-02-13 devnull .EE
312 a784b110 2005-02-13 devnull .PP
313 a784b110 2005-02-13 devnull Convert existing Unix SSH version 2 keys instead of generating new ones:
314 a784b110 2005-02-13 devnull .IP
315 a784b110 2005-02-13 devnull .EX
316 a784b110 2005-02-13 devnull cd $HOME/.ssh
317 a784b110 2005-02-13 devnull pemdecode 'DSA PRIVATE KEY' id_dsa | asn12dsa >dsa2
318 a784b110 2005-02-13 devnull pemdecode 'RSA PRIVATE KEY' id_rsa | asn12rsa >rsa2
319 a784b110 2005-02-13 devnull .EE
320 a784b110 2005-02-13 devnull .PP
321 a784b110 2005-02-13 devnull Load those keys into factotum:
322 a784b110 2005-02-13 devnull .IP
323 a784b110 2005-02-13 devnull .EX
324 a784b110 2005-02-13 devnull cat rsa1 rsa2 dsa2 | 9p write -l factotum/ctl
325 a784b110 2005-02-13 devnull .EE
326 a784b110 2005-02-13 devnull Allow use of those keys for logins on other systems:
327 a784b110 2005-02-13 devnull .IP
328 a784b110 2005-02-13 devnull .EX
329 a784b110 2005-02-13 devnull rsa2ssh rsa1 >auth.keys
330 a784b110 2005-02-13 devnull rsa2ssh rsa2 >>auth.keys
331 a784b110 2005-02-13 devnull dsa2ssh dsa2 >>auth.keys
332 a784b110 2005-02-13 devnull scp auth.keys unix:.ssh/authorized_keys
333 a784b110 2005-02-13 devnull .EE
334 a784b110 2005-02-13 devnull .SH SOURCE
335 a784b110 2005-02-13 devnull .B \*9/src/cmd/auth
336 a784b110 2005-02-13 devnull .SH "SEE ALSO
337 d32deab1 2020-08-16 rsc .MR factotum (4) ,
338 d32deab1 2020-08-16 rsc .MR pem (1) ,
339 d32deab1 2020-08-16 rsc .MR ssh (1)
340 a784b110 2005-02-13 devnull .SH BUGS
341 a784b110 2005-02-13 devnull There are too many key formats.
342 a784b110 2005-02-13 devnull .PP
343 a784b110 2005-02-13 devnull There is no program to convert SSH version 1 RSA private keys.