blob: 13eefd1c231b51adafcd13402911a34f723a4a18 [file] [log] [blame]
Ulf Möllerf9a7c342000-02-23 17:03:06 +00001OpenSSL - Frequently Asked Questions
2--------------------------------------
3
Richard Levitte0ae485d2000-11-30 13:04:14 +00004[MISC] Miscellaneous questions
5
Ulf Möller49976df2000-02-23 23:46:17 +00006* Which is the current version of OpenSSL?
Ulf Möllerf9a7c342000-02-23 17:03:06 +00007* Where is the documentation?
8* How can I contact the OpenSSL developers?
Ulf Möller2b670ea2000-02-23 19:26:59 +00009* Where can I get a compiled version of OpenSSL?
Richard Levitte0ae485d2000-11-30 13:04:14 +000010* Why aren't tools like 'autoconf' and 'libtool' used?
Lutz Jänicke9c11a0e2001-07-11 15:49:35 +000011* What is an 'engine' version?
Richard Levitted4e573f2002-11-14 13:00:59 +000012* How do I check the authenticity of the OpenSSL distribution?
Richard Levitte0ae485d2000-11-30 13:04:14 +000013
14[LEGAL] Legal questions
15
16* Do I need patent licenses to use OpenSSL?
Ulf Möller17e75742000-12-01 02:47:50 +000017* Can I use OpenSSL with GPL software?
Richard Levitte0ae485d2000-11-30 13:04:14 +000018
19[USER] Questions on using the OpenSSL applications
20
21* Why do I get a "PRNG not seeded" error message?
Bodo Möller24cc2902001-05-03 09:27:43 +000022* Why do I get an "unable to write 'random state'" error message?
Dr. Stephen Henson46e80a32000-03-24 00:47:25 +000023* How do I create certificates or certificate requests?
24* Why can't I create certificate requests?
Dr. Stephen Hensonafee7642000-03-25 02:38:28 +000025* Why does <SSL program> fail with a certificate verify error?
Dr. Stephen Hensona331a302000-05-04 00:08:35 +000026* Why can I only use weak ciphers when I connect to a server using OpenSSL?
Dr. Stephen Hensonafee7642000-03-25 02:38:28 +000027* How can I create DSA certificates?
28* Why can't I make an SSL connection using a DSA certificate?
Dr. Stephen Hensona331a302000-05-04 00:08:35 +000029* How can I remove the passphrase on a private key?
Dr. Stephen Henson1a7b2d32000-12-16 01:07:16 +000030* Why can't I use OpenSSL certificates with SSL client authentication?
Richard Levitte75222542000-12-16 11:14:41 +000031* Why does my browser give a warning about a mismatched hostname?
Dr. Stephen Henson0b33bc6b2001-11-12 01:58:50 +000032* How do I install a CA certificate into a browser?
Lutz Jänicke17e2c772002-04-29 16:01:41 +000033* Why is OpenSSL x509 DN output not conformant to RFC2253?
Richard Levitte0ae485d2000-11-30 13:04:14 +000034
35[BUILD] Questions about building and testing OpenSSL
36
37* Why does the linker complain about undefined symbols?
Ulf Möllerc32364f2000-06-03 23:21:43 +000038* Why does the OpenSSL test fail with "bc: command not found"?
Ulf Möllera6ed5dd2001-02-14 16:55:22 +000039* Why does the OpenSSL test fail with "bc: 1 no implemented"?
Richard Levittef742e492002-08-15 10:50:31 +000040* Why does the OpenSSL test fail with "bc: stack empty"?
Richard Levitte6bc847e2001-08-10 15:26:21 +000041* Why does the OpenSSL compilation fail on Alpha Tru64 Unix?
Richard Levitteb364e5d2000-07-11 21:44:53 +000042* Why does the OpenSSL compilation fail with "ar: command not found"?
Richard Levittebf55ece2000-10-17 16:16:12 +000043* Why does the OpenSSL compilation fail on Win32 with VC++?
Lutz Jänickec4da6dd2002-07-10 19:48:51 +000044* What is special about OpenSSL on Redhat?
Richard Levitte311e2092002-07-17 11:29:15 +000045* Why does the OpenSSL compilation fail on MacOS X?
46* Why does the OpenSSL test suite fail on MacOS X?
Andy Polyakov26a60b22002-12-18 09:42:51 +000047* Why does the OpenSSL test suite fail in BN_sqr test [on a 64-bit platform]?
Andy Polyakov75c40282002-12-30 20:17:20 +000048* Why does OpenBSD-i386 build fail on des-586.s with "Unimplemented segment type"?
Ulf Möllerf9a7c342000-02-23 17:03:06 +000049
Richard Levitte0ae485d2000-11-30 13:04:14 +000050[PROG] Questions about programming with OpenSSL
51
52* Is OpenSSL thread-safe?
53* I've compiled a program under Windows and it crashes: why?
54* How do I read or write a DER encoded buffer using the ASN1 functions?
55* I've tried using <M_some_evil_pkcs12_macro> and I get errors why?
56* I've called <some function> and it fails, why?
57* I just get a load of numbers for the error output, what do they mean?
58* Why do I get errors about unknown algorithms?
59* Why can't the OpenSSH configure script detect OpenSSL?
60* Can I use OpenSSL's SSL library with non-blocking I/O?
Lutz Jänicke19732242001-04-17 13:18:56 +000061* Why doesn't my server application receive a client certificate?
Lutz Jänickee1f7ea22002-06-12 20:46:38 +000062* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier?
Richard Levitte0ae485d2000-11-30 13:04:14 +000063
64===============================================================================
65
66[MISC] ========================================================================
Ulf Möllerf9a7c342000-02-23 17:03:06 +000067
Ulf Möller49976df2000-02-23 23:46:17 +000068* Which is the current version of OpenSSL?
69
70The current version is available from <URL: http://www.openssl.org>.
Richard Levitte08101d72002-12-30 23:56:09 +000071OpenSSL 0.9.7 was released on December 31, 2002.
Ulf Möller49976df2000-02-23 23:46:17 +000072
73In addition to the current stable release, you can also access daily
74snapshots of the OpenSSL development version at <URL:
75ftp://ftp.openssl.org/snapshot/>, or get it by anonymous CVS access.
76
77
Ulf Möllerf9a7c342000-02-23 17:03:06 +000078* Where is the documentation?
79
80OpenSSL is a library that provides cryptographic functionality to
81applications such as secure web servers. Be sure to read the
82documentation of the application you want to use. The INSTALL file
83explains how to install this library.
84
85OpenSSL includes a command line utility that can be used to perform a
86variety of cryptographic functions. It is described in the openssl(1)
87manpage. Documentation for developers is currently being written. A
88few manual pages already are available; overviews over libcrypto and
89libssl are given in the crypto(3) and ssl(3) manpages.
90
91The OpenSSL manpages are installed in /usr/local/ssl/man/ (or a
92different directory if you specified one as described in INSTALL).
93In addition, you can read the most current versions at
94<URL: http://www.openssl.org/docs/>.
95
96For information on parts of libcrypto that are not yet documented, you
97might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's
98predecessor, at <URL: http://www.columbia.edu/~ariel/ssleay/>. Much
99of this still applies to OpenSSL.
100
Dr. Stephen Hensonfbb41ae2000-02-25 00:23:48 +0000101There is some documentation about certificate extensions and PKCS#12
102in doc/openssl.txt
103
Ulf Möllerf9a7c342000-02-23 17:03:06 +0000104The original SSLeay documentation is included in OpenSSL as
Ulf Möllercacbb512000-02-25 14:07:51 +0000105doc/ssleay.txt. It may be useful when none of the other resources
Ulf Möllerf9a7c342000-02-23 17:03:06 +0000106help, but please note that it reflects the obsolete version SSLeay
1070.6.6.
108
109
110* How can I contact the OpenSSL developers?
111
112The README file describes how to submit bug reports and patches to
113OpenSSL. Information on the OpenSSL mailing lists is available from
114<URL: http://www.openssl.org>.
115
116
Richard Levitte0ae485d2000-11-30 13:04:14 +0000117* Where can I get a compiled version of OpenSSL?
118
119Some applications that use OpenSSL are distributed in binary form.
120When using such an application, you don't need to install OpenSSL
121yourself; the application will include the required parts (e.g. DLLs).
122
123If you want to install OpenSSL on a Windows system and you don't have
124a C compiler, read the "Mingw32" section of INSTALL.W32 for information
125on how to obtain and install the free GNU C compiler.
126
127A number of Linux and *BSD distributions include OpenSSL.
128
129
130* Why aren't tools like 'autoconf' and 'libtool' used?
131
Ulf Möllerba93fd62001-02-23 18:00:06 +0000132autoconf will probably be used in future OpenSSL versions. If it was
133less Unix-centric, it might have been used much earlier.
Richard Levitte0ae485d2000-11-30 13:04:14 +0000134
Lutz Jänickea0256f42001-07-12 08:53:50 +0000135* What is an 'engine' version?
Lutz Jänicke679df232001-07-11 15:31:21 +0000136
137With version 0.9.6 OpenSSL was extended to interface to external crypto
138hardware. This was realized in a special release '0.9.6-engine'. With
Lutz Jänickea0256f42001-07-12 08:53:50 +0000139version 0.9.7 (not yet released) the changes were merged into the main
140development line, so that the special release is no longer necessary.
Richard Levitte0ae485d2000-11-30 13:04:14 +0000141
Richard Levitted4e573f2002-11-14 13:00:59 +0000142* How do I check the authenticity of the OpenSSL distribution?
143
144We provide MD5 digests and ASC signatures of each tarball.
145Use MD5 to check that a tarball from a mirror site is identical:
146
147 md5sum TARBALL | awk '{print $1;}' | cmp - TARBALL.md5
148
149You can check authenticity using pgp or gpg. You need the OpenSSL team
150member public key used to sign it (download it from a key server). Then
151just do:
152
153 pgp TARBALL.asc
154
Richard Levitte0ae485d2000-11-30 13:04:14 +0000155[LEGAL] =======================================================================
156
Ulf Möllerc1ce32f2000-02-23 17:09:50 +0000157* Do I need patent licenses to use OpenSSL?
Ulf Möllerf9a7c342000-02-23 17:03:06 +0000158
159The patents section of the README file lists patents that may apply to
160you if you want to use OpenSSL. For information on intellectual
161property rights, please consult a lawyer. The OpenSSL team does not
162offer legal advice.
163
164You can configure OpenSSL so as not to use RC5 and IDEA by using
165 ./config no-rc5 no-idea
166
Ulf Möllerf9a7c342000-02-23 17:03:06 +0000167
Ulf Möller17e75742000-12-01 02:47:50 +0000168* Can I use OpenSSL with GPL software?
169
170On many systems including the major Linux and BSD distributions, yes (the
171GPL does not place restrictions on using libraries that are part of the
172normal operating system distribution).
173
174On other systems, the situation is less clear. Some GPL software copyright
175holders claim that you infringe on their rights if you use OpenSSL with
176their software on operating systems that don't normally include OpenSSL.
177
178If you develop open source software that uses OpenSSL, you may find it
Ulf Möllere3fefbf2001-09-07 06:39:38 +0000179useful to choose an other license than the GPL, or state explicitly that
Ulf Möller17e75742000-12-01 02:47:50 +0000180"This program is released under the GPL with the additional exemption that
181compiling, linking, and/or using OpenSSL is allowed." If you are using
182GPL software developed by others, you may want to ask the copyright holder
183for permission to use their software with OpenSSL.
184
185
Richard Levitte0ae485d2000-11-30 13:04:14 +0000186[USER] ========================================================================
Bodo Möllerb1d6e3f2000-11-17 10:25:46 +0000187
Ulf Möllerf9a7c342000-02-23 17:03:06 +0000188* Why do I get a "PRNG not seeded" error message?
189
190Cryptographic software needs a source of unpredictable data to work
191correctly. Many open source operating systems provide a "randomness
192device" that serves this purpose. On other systems, applications have
193to call the RAND_add() or RAND_seed() function with appropriate data
194before generating keys or performing public key encryption.
Bodo Möller24cc2902001-05-03 09:27:43 +0000195(These functions initialize the pseudo-random number generator, PRNG.)
Ulf Möllerf9a7c342000-02-23 17:03:06 +0000196
197Some broken applications do not do this. As of version 0.9.5, the
198OpenSSL functions that need randomness report an error if the random
199number generator has not been seeded with at least 128 bits of
200randomness. If this error occurs, please contact the author of the
201application you are using. It is likely that it never worked
Ulf Möller8311d322000-03-28 19:45:06 +0000202correctly. OpenSSL 0.9.5 and later make the error visible by refusing
203to perform potentially insecure encryption.
204
Bodo Möllerd9a770e2001-04-10 07:59:43 +0000205On systems without /dev/urandom and /dev/random, it is a good idea to
206use the Entropy Gathering Demon (EGD); see the RAND_egd() manpage for
207details. Starting with version 0.9.7, OpenSSL will automatically look
208for an EGD socket at /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool and
209/etc/entropy.
Ulf Möller2b670ea2000-02-23 19:26:59 +0000210
Bodo Möller24cc2902001-05-03 09:27:43 +0000211Most components of the openssl command line utility automatically try
212to seed the random number generator from a file. The name of the
213default seeding file is determined as follows: If environment variable
214RANDFILE is set, then it names the seeding file. Otherwise if
215environment variable HOME is set, then the seeding file is $HOME/.rnd.
216If neither RANDFILE nor HOME is set, versions up to OpenSSL 0.9.6 will
217use file .rnd in the current directory while OpenSSL 0.9.6a uses no
218default seeding file at all. OpenSSL 0.9.6b and later will behave
Ulf Möller6af59bc2001-05-04 15:03:59 +0000219similarly to 0.9.6a, but will use a default of "C:\" for HOME on
Bodo Möller24cc2902001-05-03 09:27:43 +0000220Windows systems if the environment variable has not been set.
221
222If the default seeding file does not exist or is too short, the "PRNG
223not seeded" error message may occur.
224
225The openssl command line utility will write back a new state to the
226default seeding file (and create this file if necessary) unless
227there was no sufficient seeding.
228
Lutz Jänicke35feed52001-04-09 16:01:38 +0000229Pointing $RANDFILE to an Entropy Gathering Daemon socket does not work.
230Use the "-rand" option of the OpenSSL command line tools instead.
231The $RANDFILE environment variable and $HOME/.rnd are only used by the
232OpenSSL command line tools. Applications using the OpenSSL library
233provide their own configuration options to specify the entropy source,
234please check out the documentation coming the with application.
Ulf Möller8311d322000-03-28 19:45:06 +0000235
Richard Levitte9b296152000-07-05 16:39:04 +0000236For Solaris 2.6, Tim Nibbe <tnibbe@sprint.net> and others have suggested
237installing the SUNski package from Sun patch 105710-01 (Sparc) which
238adds a /dev/random device and make sure it gets used, usually through
239$RANDFILE. There are probably similar patches for the other Solaris
Lutz Jänicke0c4d9b22002-07-10 17:52:03 +0000240versions. An official statement from Sun with respect to /dev/random
241support can be found at
242 http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsrdb/27606&zone_32=SUNWski
243However, be warned that /dev/random is usually a blocking device, which
244may have some effects on OpenSSL.
Lutz Jänicke96c930d2002-11-11 08:33:10 +0000245A third party /dev/random solution for Solaris is available at
246 http://www.cosy.sbg.ac.at/~andi/
Richard Levitte9b296152000-07-05 16:39:04 +0000247
Ulf Möller2b670ea2000-02-23 19:26:59 +0000248
Bodo Möller24cc2902001-05-03 09:27:43 +0000249* Why do I get an "unable to write 'random state'" error message?
250
251
252Sometimes the openssl command line utility does not abort with
253a "PRNG not seeded" error message, but complains that it is
254"unable to write 'random state'". This message refers to the
255default seeding file (see previous answer). A possible reason
256is that no default filename is known because neither RANDFILE
257nor HOME is set. (Versions up to 0.9.6 used file ".rnd" in the
258current directory in this case, but this has changed with 0.9.6a.)
259
260
Richard Levitte0ae485d2000-11-30 13:04:14 +0000261* How do I create certificates or certificate requests?
262
263Check out the CA.pl(1) manual page. This provides a simple wrapper round
264the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check
265out the manual pages for the individual utilities and the certificate
266extensions documentation (currently in doc/openssl.txt).
267
268
269* Why can't I create certificate requests?
270
271You typically get the error:
272
273 unable to find 'distinguished_name' in config
274 problems making Certificate Request
275
276This is because it can't find the configuration file. Check out the
277DIAGNOSTICS section of req(1) for more information.
278
279
280* Why does <SSL program> fail with a certificate verify error?
281
282This problem is usually indicated by log messages saying something like
283"unable to get local issuer certificate" or "self signed certificate".
284When a certificate is verified its root CA must be "trusted" by OpenSSL
285this typically means that the CA certificate must be placed in a directory
286or file and the relevant program configured to read it. The OpenSSL program
287'verify' behaves in a similar way and issues similar error messages: check
288the verify(1) program manual page for more information.
289
290
291* Why can I only use weak ciphers when I connect to a server using OpenSSL?
292
293This is almost certainly because you are using an old "export grade" browser
294which only supports weak encryption. Upgrade your browser to support 128 bit
295ciphers.
296
297
298* How can I create DSA certificates?
299
300Check the CA.pl(1) manual page for a DSA certificate example.
301
302
303* Why can't I make an SSL connection to a server using a DSA certificate?
304
305Typically you'll see a message saying there are no shared ciphers when
306the same setup works fine with an RSA certificate. There are two possible
307causes. The client may not support connections to DSA servers most web
308browsers (including Netscape and MSIE) only support connections to servers
309supporting RSA cipher suites. The other cause is that a set of DH parameters
310has not been supplied to the server. DH parameters can be created with the
311dhparam(1) command and loaded using the SSL_CTX_set_tmp_dh() for example:
312check the source to s_server in apps/s_server.c for an example.
313
314
315* How can I remove the passphrase on a private key?
316
317Firstly you should be really *really* sure you want to do this. Leaving
318a private key unencrypted is a major security risk. If you decide that
319you do have to do this check the EXAMPLES sections of the rsa(1) and
320dsa(1) manual pages.
321
322
Dr. Stephen Henson1a7b2d32000-12-16 01:07:16 +0000323* Why can't I use OpenSSL certificates with SSL client authentication?
324
325What will typically happen is that when a server requests authentication
326it will either not include your certificate or tell you that you have
327no client certificates (Netscape) or present you with an empty list box
328(MSIE). The reason for this is that when a server requests a client
329certificate it includes a list of CAs names which it will accept. Browsers
330will only let you select certificates from the list on the grounds that
331there is little point presenting a certificate which the server will
332reject.
333
334The solution is to add the relevant CA certificate to your servers "trusted
Ulf Möllere3fefbf2001-09-07 06:39:38 +0000335CA list". How you do this depends on the server software in uses. You can
Dr. Stephen Henson1a7b2d32000-12-16 01:07:16 +0000336print out the servers list of acceptable CAs using the OpenSSL s_client tool:
337
338openssl s_client -connect www.some.host:443 -prexit
339
Bodo Möller959f67d2000-12-17 00:32:49 +0000340If your server only requests certificates on certain URLs then you may need
Dr. Stephen Henson1a7b2d32000-12-16 01:07:16 +0000341to manually issue an HTTP GET command to get the list when s_client connects:
342
343GET /some/page/needing/a/certificate.html
344
345If your CA does not appear in the list then this confirms the problem.
346
347
348* Why does my browser give a warning about a mismatched hostname?
349
350Browsers expect the server's hostname to match the value in the commonName
351(CN) field of the certificate. If it does not then you get a warning.
352
353
Dr. Stephen Henson0b33bc6b2001-11-12 01:58:50 +0000354* How do I install a CA certificate into a browser?
355
356The usual way is to send the DER encoded certificate to the browser as
357MIME type application/x-x509-ca-cert, for example by clicking on an appropriate
358link. On MSIE certain extensions such as .der or .cacert may also work, or you
359can import the certificate using the certificate import wizard.
360
361You can convert a certificate to DER form using the command:
362
363openssl x509 -in ca.pem -outform DER -out ca.der
364
365Occasionally someone suggests using a command such as:
366
367openssl pkcs12 -export -out cacert.p12 -in cacert.pem -inkey cakey.pem
368
369DO NOT DO THIS! This command will give away your CAs private key and
370reduces its security to zero: allowing anyone to forge certificates in
371whatever name they choose.
372
Lutz Jänicke17e2c772002-04-29 16:01:41 +0000373* Why is OpenSSL x509 DN output not conformant to RFC2253?
374
375The ways to print out the oneline format of the DN (Distinguished Name) have
376been extended in version 0.9.7 of OpenSSL. Using the new X509_NAME_print_ex()
377interface, the "-nameopt" option could be introduded. See the manual
378page of the "openssl x509" commandline tool for details. The old behaviour
379has however been left as default for the sake of compatibility.
Dr. Stephen Henson0b33bc6b2001-11-12 01:58:50 +0000380
Richard Levitte0ae485d2000-11-30 13:04:14 +0000381[BUILD] =======================================================================
382
Ulf Möller49976df2000-02-23 23:46:17 +0000383* Why does the linker complain about undefined symbols?
384
Ulf Möllercacbb512000-02-25 14:07:51 +0000385Maybe the compilation was interrupted, and make doesn't notice that
Ulf Möller49976df2000-02-23 23:46:17 +0000386something is missing. Run "make clean; make".
387
388If you used ./Configure instead of ./config, make sure that you
389selected the right target. File formats may differ slightly between
390OS versions (for example sparcv8/sparcv9, or a.out/elf).
391
Ulf Möller0816bc22000-02-29 15:33:35 +0000392In case you get errors about the following symbols, use the config
393option "no-asm", as described in INSTALL:
394
395 BF_cbc_encrypt, BF_decrypt, BF_encrypt, CAST_cbc_encrypt,
396 CAST_decrypt, CAST_encrypt, RC4, RC5_32_cbc_encrypt, RC5_32_decrypt,
397 RC5_32_encrypt, bn_add_words, bn_div_words, bn_mul_add_words,
398 bn_mul_comba4, bn_mul_comba8, bn_mul_words, bn_sqr_comba4,
399 bn_sqr_comba8, bn_sqr_words, bn_sub_words, des_decrypt3,
400 des_ede3_cbc_encrypt, des_encrypt, des_encrypt2, des_encrypt3,
401 des_ncbc_encrypt, md5_block_asm_host_order, sha1_block_asm_data_order
402
Ulf Möller569be072000-02-29 17:18:24 +0000403If none of these helps, you may want to try using the current snapshot.
Ulf Möller49976df2000-02-23 23:46:17 +0000404If the problem persists, please submit a bug report.
405
406
Richard Levitte0ae485d2000-11-30 13:04:14 +0000407* Why does the OpenSSL test fail with "bc: command not found"?
Ulf Möller2b670ea2000-02-23 19:26:59 +0000408
Richard Levitte0ae485d2000-11-30 13:04:14 +0000409You didn't install "bc", the Unix calculator. If you want to run the
410tests, get GNU bc from ftp://ftp.gnu.org or from your OS distributor.
Ulf Möller2b670ea2000-02-23 19:26:59 +0000411
Ulf Möller2b670ea2000-02-23 19:26:59 +0000412
Ulf Möllera6ed5dd2001-02-14 16:55:22 +0000413* Why does the OpenSSL test fail with "bc: 1 no implemented"?
Richard Levitte0ae485d2000-11-30 13:04:14 +0000414
Richard Levitte1417f2d2001-02-14 07:45:59 +0000415On some SCO installations or versions, bc has a bug that gets triggered
416when you run the test suite (using "make test"). The message returned is
Ulf Möllera6ed5dd2001-02-14 16:55:22 +0000417"bc: 1 not implemented".
Richard Levitte1417f2d2001-02-14 07:45:59 +0000418
419The best way to deal with this is to find another implementation of bc
420and compile/install it. GNU bc (see http://www.gnu.org/software/software.html
421for download instructions) can be safely used, for example.
Richard Levitte0ae485d2000-11-30 13:04:14 +0000422
423
Richard Levittef742e492002-08-15 10:50:31 +0000424* Why does the OpenSSL test fail with "bc: stack empty"?
425
426On some DG/ux versions, bc seems to have a too small stack for calculations
427that the OpenSSL bntest throws at it. This gets triggered when you run the
428test suite (using "make test"). The message returned is "bc: stack empty".
429
430The best way to deal with this is to find another implementation of bc
431and compile/install it. GNU bc (see http://www.gnu.org/software/software.html
432for download instructions) can be safely used, for example.
433
434
Richard Levitte6bc847e2001-08-10 15:26:21 +0000435* Why does the OpenSSL compilation fail on Alpha Tru64 Unix?
Richard Levitte0ae485d2000-11-30 13:04:14 +0000436
Richard Levitte6bc847e2001-08-10 15:26:21 +0000437On some Alpha installations running Tru64 Unix and Compaq C, the compilation
Richard Levitte0ae485d2000-11-30 13:04:14 +0000438of crypto/sha/sha_dgst.c fails with the message 'Fatal: Insufficient virtual
439memory to continue compilation.' As far as the tests have shown, this may be
440a compiler bug. What happens is that it eats up a lot of resident memory
441to build something, probably a table. The problem is clearly in the
442optimization code, because if one eliminates optimization completely (-O0),
443the compilation goes through (and the compiler consumes about 2MB of resident
444memory instead of 240MB or whatever one's limit is currently).
445
446There are three options to solve this problem:
447
4481. set your current data segment size soft limit higher. Experience shows
449that about 241000 kbytes seems to be enough on an AlphaServer DS10. You do
450this with the command 'ulimit -Sd nnnnnn', where 'nnnnnn' is the number of
451kbytes to set the limit to.
452
4532. If you have a hard limit that is lower than what you need and you can't
454get it changed, you can compile all of OpenSSL with -O0 as optimization
455level. This is however not a very nice thing to do for those who expect to
456get the best result from OpenSSL. A bit more complicated solution is the
457following:
458
459----- snip:start -----
460 make DIRS=crypto SDIRS=sha "`grep '^CFLAG=' Makefile.ssl | \
461 sed -e 's/ -O[0-9] / -O0 /'`"
462 rm `ls crypto/*.o crypto/sha/*.o | grep -v 'sha_dgst\.o'`
463 make
464----- snip:end -----
465
466This will only compile sha_dgst.c with -O0, the rest with the optimization
467level chosen by the configuration process. When the above is done, do the
468test and installation and you're set.
469
470
471* Why does the OpenSSL compilation fail with "ar: command not found"?
472
473Getting this message is quite usual on Solaris 2, because Sun has hidden
474away 'ar' and other development commands in directories that aren't in
475$PATH by default. One of those directories is '/usr/ccs/bin'. The
476quickest way to fix this is to do the following (it assumes you use sh
477or any sh-compatible shell):
478
479----- snip:start -----
480 PATH=${PATH}:/usr/ccs/bin; export PATH
481----- snip:end -----
482
483and then redo the compilation. What you should really do is make sure
484'/usr/ccs/bin' is permanently in your $PATH, for example through your
485'.profile' (again, assuming you use a sh-compatible shell).
486
487
488* Why does the OpenSSL compilation fail on Win32 with VC++?
489
490Sometimes, you may get reports from VC++ command line (cl) that it
491can't find standard include files like stdio.h and other weirdnesses.
492One possible cause is that the environment isn't correctly set up.
493To solve that problem, one should run VCVARS32.BAT which is found in
494the 'bin' subdirectory of the VC++ installation directory (somewhere
495under 'Program Files'). This needs to be done prior to running NMAKE,
496and the changes are only valid for the current DOS session.
497
498
Lutz Jänickec4da6dd2002-07-10 19:48:51 +0000499* What is special about OpenSSL on Redhat?
500
Lutz Jänicke876811e2002-07-12 15:26:37 +0000501Red Hat Linux (release 7.0 and later) include a preinstalled limited
502version of OpenSSL. For patent reasons, support for IDEA, RC5 and MDC2
503is disabled in this version. The same may apply to other Linux distributions.
504Users may therefore wish to install more or all of the features left out.
Lutz Jänickec4da6dd2002-07-10 19:48:51 +0000505
506To do this you MUST ensure that you do not overwrite the openssl that is in
507/usr/bin on your Red Hat machine. Several packages depend on this file,
508including sendmail and ssh. /usr/local/bin is a good alternative choice. The
509libraries that come with Red Hat 7.0 onwards have different names and so are
510not affected. (eg For Red Hat 7.2 they are /lib/libssl.so.0.9.6b and
511/lib/libcrypto.so.0.9.6b with symlinks /lib/libssl.so.2 and
512/lib/libcrypto.so.2 respectively).
513
514Please note that we have been advised by Red Hat attempting to recompile the
515openssl rpm with all the cryptography enabled will not work. All other
516packages depend on the original Red Hat supplied openssl package. It is also
517worth noting that due to the way Red Hat supplies its packages, updates to
518openssl on each distribution never change the package version, only the
519build number. For example, on Red Hat 7.1, the latest openssl package has
520version number 0.9.6 and build number 9 even though it contains all the
521relevant updates in packages up to and including 0.9.6b.
522
523A possible way around this is to persuade Red Hat to produce a non-US
524version of Red Hat Linux.
525
Lutz Jänicke876811e2002-07-12 15:26:37 +0000526FYI: Patent numbers and expiry dates of US patents:
527MDC-2: 4,908,861 13/03/2007
528IDEA: 5,214,703 25/05/2010
529RC5: 5,724,428 03/03/2015
530
Richard Levitte311e2092002-07-17 11:29:15 +0000531
532* Why does the OpenSSL compilation fail on MacOS X?
533
534If the failure happens when trying to build the "openssl" binary, with
535a large number of undefined symbols, it's very probable that you have
536OpenSSL 0.9.6b delivered with the operating system (you can find out by
537running '/usr/bin/openssl version') and that you were trying to build
538OpenSSL 0.9.7 or newer. The problem is that the loader ('ld') in
539MacOS X has a misfeature that's quite difficult to go around.
540Look in the file PROBLEMS for a more detailed explanation and for possible
541solutions.
542
543
544* Why does the OpenSSL test suite fail on MacOS X?
545
546If the failure happens when running 'make test' and the RC4 test fails,
547it's very probable that you have OpenSSL 0.9.6b delivered with the
548operating system (you can find out by running '/usr/bin/openssl version')
549and that you were trying to build OpenSSL 0.9.6d. The problem is that
550the loader ('ld') in MacOS X has a misfeature that's quite difficult to
551go around and has linked the programs "openssl" and the test programs
552with /usr/lib/libcrypto.dylib and /usr/lib/libssl.dylib instead of the
553libraries you just built.
554Look in the file PROBLEMS for a more detailed explanation and for possible
555solutions.
556
Andy Polyakov26a60b22002-12-18 09:42:51 +0000557* Why does the OpenSSL test suite fail in BN_sqr test [on a 64-bit platform]?
Andy Polyakove0b20732002-12-09 13:43:38 +0000558
559Failure in BN_sqr test is most likely caused by a failure to configure the
Andy Polyakov26a60b22002-12-18 09:42:51 +0000560toolkit for current platform or lack of support for the platform in question.
561Run './config -t' and './apps/openssl version -p'. Do these platform
562identifiers match? If they don't, then you most likely failed to run
563./config and you're hereby advised to do so before filing a bug report.
564If ./config itself fails to run, then it's most likely problem with your
565local environment and you should turn to your system administrator (or
Andy Polyakov76a03d52002-12-27 14:27:48 +0000566similar). If identifiers match (and/or no alternative identifier is
567suggested by ./config script), then the platform is unsupported. There might
568or might not be a workaround. Most notably on SPARC64 platforms with GNU
569C compiler you should be able to produce a working build by running
570'./config -m32'. I understand that -m32 might not be what you want/need,
Andy Polyakov85f258d2002-12-30 11:10:03 +0000571but the build should be operational. For further details turn to
572<openssl-dev@openssl.org>.
573
Andy Polyakov75c40282002-12-30 20:17:20 +0000574* Why does OpenBSD-i386 build fail on des-586.s with "Unimplemented segment type"?
Andy Polyakov85f258d2002-12-30 11:10:03 +0000575
Andy Polyakov75c40282002-12-30 20:17:20 +0000576As of 0.9.7 assembler routines were overhauled for position independence
577of the machine code, which is essential for shared library support. For
578some reason OpenBSD is equipped with an out-of-date GNU assembler which
579finds the new code offensive. To work around the problem, configure with
Andy Polyakov0382c952003-01-12 21:39:13 +0000580no-asm (and sacrifice a great deal of performance) or patch your assembler
581according to <URL: http://www.openssl.org/~appro/gas-1.92.3.OpenBSD.patch>.
Andy Polyakov75c40282002-12-30 20:17:20 +0000582For your convenience a pre-compiled replacement binary is provided at
Andy Polyakov1a6356b2003-01-13 16:34:05 +0000583<URL: http://www.openssl.org/~appro/gas-1.92.3.static.aout.bin>.
584Reportedly elder *BSD a.out platforms also suffer from this problem and
585remedy should be same. Provided binary is statically linked and should be
586working across wider range of *BSD branches, not just OpenBSD.
Andy Polyakove0b20732002-12-09 13:43:38 +0000587
Richard Levitte0ae485d2000-11-30 13:04:14 +0000588[PROG] ========================================================================
589
590* Is OpenSSL thread-safe?
591
592Yes (with limitations: an SSL connection may not concurrently be used
593by multiple threads). On Windows and many Unix systems, OpenSSL
594automatically uses the multi-threaded versions of the standard
595libraries. If your platform is not one of these, consult the INSTALL
596file.
597
598Multi-threaded applications must provide two callback functions to
599OpenSSL. This is described in the threads(3) manpage.
Richard Levittee8dbc152000-03-23 19:31:37 +0000600
Dr. Stephen Hensonafee7642000-03-25 02:38:28 +0000601
Dr. Stephen Henson46e80a32000-03-24 00:47:25 +0000602* I've compiled a program under Windows and it crashes: why?
603
Richard Levittea542db92001-11-19 20:46:35 +0000604This is usually because you've missed the comment in INSTALL.W32.
605Your application must link against the same version of the Win32
606C-Runtime against which your openssl libraries were linked. The
607default version for OpenSSL is /MD - "Multithreaded DLL".
608
609If you are using Microsoft Visual C++'s IDE (Visual Studio), in
610many cases, your new project most likely defaulted to "Debug
611Singlethreaded" - /ML. This is NOT interchangeable with /MD and your
612program will crash, typically on the first BIO related read or write
613operation.
614
615For each of the six possible link stage configurations within Win32,
616your application must link against the same by which OpenSSL was
617built. If you are using MS Visual C++ (Studio) this can be changed
618by:
619
6201. Select Settings... from the Project Menu.
6212. Select the C/C++ Tab.
6223. Select "Code Generation from the "Category" drop down list box
6234. Select the Appropriate library (see table below) from the "Use
624 run-time library" drop down list box. Perform this step for both
625 your debug and release versions of your application (look at the
626 top left of the settings panel to change between the two)
627
628 Single Threaded /ML - MS VC++ often defaults to
629 this for the release
630 version of a new project.
631 Debug Single Threaded /MLd - MS VC++ often defaults to
632 this for the debug version
633 of a new project.
634 Multithreaded /MT
635 Debug Multithreaded /MTd
636 Multithreaded DLL /MD - OpenSSL defaults to this.
637 Debug Multithreaded DLL /MDd
638
639Note that debug and release libraries are NOT interchangeable. If you
640built OpenSSL with /MD your application must use /MD and cannot use /MDd.
Dr. Stephen Henson46e80a32000-03-24 00:47:25 +0000641
642
Dr. Stephen Hensonc5a3b7e2000-09-09 00:59:37 +0000643* How do I read or write a DER encoded buffer using the ASN1 functions?
644
645You have two options. You can either use a memory BIO in conjunction
646with the i2d_XXX_bio() or d2i_XXX_bio() functions or you can use the
647i2d_XXX(), d2i_XXX() functions directly. Since these are often the
648cause of grief here are some code fragments using PKCS7 as an example:
649
650unsigned char *buf, *p;
651int len;
652
653len = i2d_PKCS7(p7, NULL);
Ulf Möller7cae5f92000-09-20 03:42:15 +0000654buf = OPENSSL_malloc(len); /* or Malloc, error checking omitted */
Dr. Stephen Hensonc5a3b7e2000-09-09 00:59:37 +0000655p = buf;
656i2d_PKCS7(p7, &p);
657
658At this point buf contains the len bytes of the DER encoding of
659p7.
660
661The opposite assumes we already have len bytes in buf:
662
663unsigned char *p;
664p = buf;
665p7 = d2i_PKCS7(NULL, &p, len);
666
667At this point p7 contains a valid PKCS7 structure of NULL if an error
668occurred. If an error occurred ERR_print_errors(bio) should give more
669information.
670
671The reason for the temporary variable 'p' is that the ASN1 functions
672increment the passed pointer so it is ready to read or write the next
673structure. This is often a cause of problems: without the temporary
674variable the buffer pointer is changed to point just after the data
675that has been read or written. This may well be uninitialized data
676and attempts to free the buffer will have unpredictable results
677because it no longer points to the same address.
678
679
Dr. Stephen Henson84b65342000-09-07 23:14:26 +0000680* I've tried using <M_some_evil_pkcs12_macro> and I get errors why?
681
682This usually happens when you try compiling something using the PKCS#12
683macros with a C++ compiler. There is hardly ever any need to use the
684PKCS#12 macros in a program, it is much easier to parse and create
685PKCS#12 files using the PKCS12_parse() and PKCS12_create() functions
686documented in doc/openssl.txt and with examples in demos/pkcs12. The
687'pkcs12' application has to use the macros because it prints out
688debugging information.
689
690
Dr. Stephen Henson35af4602000-03-30 02:00:25 +0000691* I've called <some function> and it fails, why?
692
Bodo Möller02859fb2000-04-04 21:31:14 +0000693Before submitting a report or asking in one of the mailing lists, you
694should try to determine the cause. In particular, you should call
Dr. Stephen Henson35af4602000-03-30 02:00:25 +0000695ERR_print_errors() or ERR_print_errors_fp() after the failed call
Bodo Möller02859fb2000-04-04 21:31:14 +0000696and see if the message helps. Note that the problem may occur earlier
697than you think -- you should check for errors after every call where
698it is possible, otherwise the actual problem may be hidden because
699some OpenSSL functions clear the error state.
Dr. Stephen Henson35af4602000-03-30 02:00:25 +0000700
701
702* I just get a load of numbers for the error output, what do they mean?
703
704The actual format is described in the ERR_print_errors() manual page.
705You should call the function ERR_load_crypto_strings() before hand and
706the message will be output in text form. If you can't do this (for example
707it is a pre-compiled binary) you can use the errstr utility on the error
708code itself (the hex digits after the second colon).
709
710
Dr. Stephen Henson46e80a32000-03-24 00:47:25 +0000711* Why do I get errors about unknown algorithms?
712
713This can happen under several circumstances such as reading in an
714encrypted private key or attempting to decrypt a PKCS#12 file. The cause
715is forgetting to load OpenSSL's table of algorithms with
716OpenSSL_add_all_algorithms(). See the manual page for more information.
717
718
Richard Levittee8dbc152000-03-23 19:31:37 +0000719* Why can't the OpenSSH configure script detect OpenSSL?
720
Lutz Jänickea116afa2001-04-09 15:55:58 +0000721Several reasons for problems with the automatic detection exist.
722OpenSSH requires at least version 0.9.5a of the OpenSSL libraries.
723Sometimes the distribution has installed an older version in the system
724locations that is detected instead of a new one installed. The OpenSSL
725library might have been compiled for another CPU or another mode (32/64 bits).
726Permissions might be wrong.
Richard Levittee8dbc152000-03-23 19:31:37 +0000727
Lutz Jänickea116afa2001-04-09 15:55:58 +0000728The general answer is to check the config.log file generated when running
729the OpenSSH configure script. It should contain the detailed information
730on why the OpenSSL library was not detected or considered incompatible.
Richard Levitte31efc3a2000-05-31 20:11:11 +0000731
Richard Levitte0ae485d2000-11-30 13:04:14 +0000732* Can I use OpenSSL's SSL library with non-blocking I/O?
Ulf Möllerc32364f2000-06-03 23:21:43 +0000733
Richard Levitte0ae485d2000-11-30 13:04:14 +0000734Yes; make sure to read the SSL_get_error(3) manual page!
735
736A pitfall to avoid: Don't assume that SSL_read() will just read from
737the underlying transport or that SSL_write() will just write to it --
738it is also possible that SSL_write() cannot do any useful work until
739there is data to read, or that SSL_read() cannot do anything until it
740is possible to send data. One reason for this is that the peer may
741request a new TLS/SSL handshake at any time during the protocol,
742requiring a bi-directional message exchange; both SSL_read() and
743SSL_write() will try to continue any pending handshake.
Ulf Möllerc32364f2000-06-03 23:21:43 +0000744
745
Lutz Jänicke19732242001-04-17 13:18:56 +0000746* Why doesn't my server application receive a client certificate?
747
748Due to the TLS protocol definition, a client will only send a certificate,
Ulf Möllere3fefbf2001-09-07 06:39:38 +0000749if explicitly asked by the server. Use the SSL_VERIFY_PEER flag of the
Lutz Jänicke19732242001-04-17 13:18:56 +0000750SSL_CTX_set_verify() function to enable the use of client certificates.
751
752
Lutz Jänickee1f7ea22002-06-12 20:46:38 +0000753* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier?
754
Lutz Jänickee8233e62002-06-13 08:53:42 +0000755For OpenSSL 0.9.7 the OID table was extended and corrected. In earlier
756versions, uniqueIdentifier was incorrectly used for X.509 certificates.
757The correct name according to RFC2256 (LDAP) is x500UniqueIdentifier.
758Change your code to use the new name when compiling against OpenSSL 0.9.7.
Lutz Jänickee1f7ea22002-06-12 20:46:38 +0000759
760
Richard Levitte0ae485d2000-11-30 13:04:14 +0000761===============================================================================
Richard Levittebf55ece2000-10-17 16:16:12 +0000762