]> git.ipfire.org Git - thirdparty/openssl.git/blame - FAQ
ispell
[thirdparty/openssl.git] / FAQ
CommitLineData
f9a7c34f
UM
1OpenSSL - Frequently Asked Questions
2--------------------------------------
3
0ae485dc
RL
4[MISC] Miscellaneous questions
5
49976df5 6* Which is the current version of OpenSSL?
f9a7c34f
UM
7* Where is the documentation?
8* How can I contact the OpenSSL developers?
0ae485dc
RL
9* Where can I get a compiled version of OpenSSL?
10* Why aren't tools like 'autoconf' and 'libtool' used?
9c11a0e5 11* What is an 'engine' version?
0ae485dc
RL
12
13[LEGAL] Legal questions
14
c1ce32f1 15* Do I need patent licenses to use OpenSSL?
17e75747 16* Can I use OpenSSL with GPL software?
0ae485dc
RL
17
18[USER] Questions on using the OpenSSL applications
19
f9a7c34f 20* Why do I get a "PRNG not seeded" error message?
24cc290b 21* Why do I get an "unable to write 'random state'" error message?
46e80a30
DSH
22* How do I create certificates or certificate requests?
23* Why can't I create certificate requests?
afee764c 24* Why does <SSL program> fail with a certificate verify error?
a331a305 25* Why can I only use weak ciphers when I connect to a server using OpenSSL?
afee764c
DSH
26* How can I create DSA certificates?
27* Why can't I make an SSL connection using a DSA certificate?
a331a305 28* How can I remove the passphrase on a private key?
1a7b2d33 29* Why can't I use OpenSSL certificates with SSL client authentication?
7522254b 30* Why does my browser give a warning about a mismatched hostname?
0ae485dc
RL
31
32[BUILD] Questions about building and testing OpenSSL
33
34* Why does the linker complain about undefined symbols?
c32364f5 35* Why does the OpenSSL test fail with "bc: command not found"?
a6ed5dd6 36* Why does the OpenSSL test fail with "bc: 1 no implemented"?
6bc847e4 37* Why does the OpenSSL compilation fail on Alpha Tru64 Unix?
b364e5d2 38* Why does the OpenSSL compilation fail with "ar: command not found"?
bf55ece1 39* Why does the OpenSSL compilation fail on Win32 with VC++?
f9a7c34f 40
0ae485dc
RL
41[PROG] Questions about programming with OpenSSL
42
43* Is OpenSSL thread-safe?
44* I've compiled a program under Windows and it crashes: why?
45* How do I read or write a DER encoded buffer using the ASN1 functions?
46* I've tried using <M_some_evil_pkcs12_macro> and I get errors why?
47* I've called <some function> and it fails, why?
48* I just get a load of numbers for the error output, what do they mean?
49* Why do I get errors about unknown algorithms?
50* Why can't the OpenSSH configure script detect OpenSSL?
51* Can I use OpenSSL's SSL library with non-blocking I/O?
19732245 52* Why doesn't my server application receive a client certificate?
0ae485dc
RL
53
54===============================================================================
55
56[MISC] ========================================================================
f9a7c34f 57
49976df5
UM
58* Which is the current version of OpenSSL?
59
60The current version is available from <URL: http://www.openssl.org>.
e9ad0d2c 61OpenSSL 0.9.6b was released on July 9th, 2001.
49976df5
UM
62
63In addition to the current stable release, you can also access daily
64snapshots of the OpenSSL development version at <URL:
65ftp://ftp.openssl.org/snapshot/>, or get it by anonymous CVS access.
66
67
f9a7c34f
UM
68* Where is the documentation?
69
70OpenSSL is a library that provides cryptographic functionality to
71applications such as secure web servers. Be sure to read the
72documentation of the application you want to use. The INSTALL file
73explains how to install this library.
74
75OpenSSL includes a command line utility that can be used to perform a
76variety of cryptographic functions. It is described in the openssl(1)
77manpage. Documentation for developers is currently being written. A
78few manual pages already are available; overviews over libcrypto and
79libssl are given in the crypto(3) and ssl(3) manpages.
80
81The OpenSSL manpages are installed in /usr/local/ssl/man/ (or a
82different directory if you specified one as described in INSTALL).
83In addition, you can read the most current versions at
84<URL: http://www.openssl.org/docs/>.
85
86For information on parts of libcrypto that are not yet documented, you
87might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's
88predecessor, at <URL: http://www.columbia.edu/~ariel/ssleay/>. Much
89of this still applies to OpenSSL.
90
fbb41ae0
DSH
91There is some documentation about certificate extensions and PKCS#12
92in doc/openssl.txt
93
f9a7c34f 94The original SSLeay documentation is included in OpenSSL as
cacbb51e 95doc/ssleay.txt. It may be useful when none of the other resources
f9a7c34f
UM
96help, but please note that it reflects the obsolete version SSLeay
970.6.6.
98
99
100* How can I contact the OpenSSL developers?
101
102The README file describes how to submit bug reports and patches to
103OpenSSL. Information on the OpenSSL mailing lists is available from
104<URL: http://www.openssl.org>.
105
106
0ae485dc 107* Where can I get a compiled version of OpenSSL?
f9a7c34f 108
0ae485dc
RL
109Some applications that use OpenSSL are distributed in binary form.
110When using such an application, you don't need to install OpenSSL
111yourself; the application will include the required parts (e.g. DLLs).
f9a7c34f 112
0ae485dc
RL
113If you want to install OpenSSL on a Windows system and you don't have
114a C compiler, read the "Mingw32" section of INSTALL.W32 for information
115on how to obtain and install the free GNU C compiler.
f9a7c34f 116
0ae485dc 117A number of Linux and *BSD distributions include OpenSSL.
f9a7c34f 118
f9a7c34f 119
0ae485dc 120* Why aren't tools like 'autoconf' and 'libtool' used?
f9a7c34f 121
ba93fd6a
UM
122autoconf will probably be used in future OpenSSL versions. If it was
123less Unix-centric, it might have been used much earlier.
f9a7c34f 124
a0256f46 125* What is an 'engine' version?
679df234
LJ
126
127With version 0.9.6 OpenSSL was extended to interface to external crypto
128hardware. This was realized in a special release '0.9.6-engine'. With
a0256f46
LJ
129version 0.9.7 (not yet released) the changes were merged into the main
130development line, so that the special release is no longer necessary.
b1d6e3f5 131
0ae485dc 132[LEGAL] =======================================================================
b1d6e3f5 133
0ae485dc 134* Do I need patent licenses to use OpenSSL?
b1d6e3f5 135
0ae485dc
RL
136The patents section of the README file lists patents that may apply to
137you if you want to use OpenSSL. For information on intellectual
138property rights, please consult a lawyer. The OpenSSL team does not
139offer legal advice.
140
141You can configure OpenSSL so as not to use RC5 and IDEA by using
142 ./config no-rc5 no-idea
143
144
17e75747
UM
145* Can I use OpenSSL with GPL software?
146
147On many systems including the major Linux and BSD distributions, yes (the
148GPL does not place restrictions on using libraries that are part of the
149normal operating system distribution).
150
151On other systems, the situation is less clear. Some GPL software copyright
152holders claim that you infringe on their rights if you use OpenSSL with
153their software on operating systems that don't normally include OpenSSL.
154
155If you develop open source software that uses OpenSSL, you may find it
156useful to choose an other license than the GPL, or state explicitely that
157"This program is released under the GPL with the additional exemption that
158compiling, linking, and/or using OpenSSL is allowed." If you are using
159GPL software developed by others, you may want to ask the copyright holder
160for permission to use their software with OpenSSL.
161
162
0ae485dc 163[USER] ========================================================================
b1d6e3f5 164
f9a7c34f
UM
165* Why do I get a "PRNG not seeded" error message?
166
167Cryptographic software needs a source of unpredictable data to work
168correctly. Many open source operating systems provide a "randomness
169device" that serves this purpose. On other systems, applications have
170to call the RAND_add() or RAND_seed() function with appropriate data
171before generating keys or performing public key encryption.
24cc290b 172(These functions initialize the pseudo-random number generator, PRNG.)
f9a7c34f
UM
173
174Some broken applications do not do this. As of version 0.9.5, the
175OpenSSL functions that need randomness report an error if the random
176number generator has not been seeded with at least 128 bits of
177randomness. If this error occurs, please contact the author of the
178application you are using. It is likely that it never worked
8311d323
UM
179correctly. OpenSSL 0.9.5 and later make the error visible by refusing
180to perform potentially insecure encryption.
181
d9a770e6
BM
182On systems without /dev/urandom and /dev/random, it is a good idea to
183use the Entropy Gathering Demon (EGD); see the RAND_egd() manpage for
184details. Starting with version 0.9.7, OpenSSL will automatically look
185for an EGD socket at /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool and
186/etc/entropy.
2b670ea2 187
24cc290b
BM
188Most components of the openssl command line utility automatically try
189to seed the random number generator from a file. The name of the
190default seeding file is determined as follows: If environment variable
191RANDFILE is set, then it names the seeding file. Otherwise if
192environment variable HOME is set, then the seeding file is $HOME/.rnd.
193If neither RANDFILE nor HOME is set, versions up to OpenSSL 0.9.6 will
194use file .rnd in the current directory while OpenSSL 0.9.6a uses no
195default seeding file at all. OpenSSL 0.9.6b and later will behave
6af59bc0 196similarly to 0.9.6a, but will use a default of "C:\" for HOME on
24cc290b
BM
197Windows systems if the environment variable has not been set.
198
199If the default seeding file does not exist or is too short, the "PRNG
200not seeded" error message may occur.
201
202The openssl command line utility will write back a new state to the
203default seeding file (and create this file if necessary) unless
204there was no sufficient seeding.
205
35feed50
LJ
206Pointing $RANDFILE to an Entropy Gathering Daemon socket does not work.
207Use the "-rand" option of the OpenSSL command line tools instead.
208The $RANDFILE environment variable and $HOME/.rnd are only used by the
209OpenSSL command line tools. Applications using the OpenSSL library
210provide their own configuration options to specify the entropy source,
211please check out the documentation coming the with application.
8311d323 212
9b296157
RL
213For Solaris 2.6, Tim Nibbe <tnibbe@sprint.net> and others have suggested
214installing the SUNski package from Sun patch 105710-01 (Sparc) which
215adds a /dev/random device and make sure it gets used, usually through
216$RANDFILE. There are probably similar patches for the other Solaris
217versions. However, be warned that /dev/random is usually a blocking
7cae5f9f 218device, which may have some effects on OpenSSL.
9b296157 219
2b670ea2 220
24cc290b
BM
221* Why do I get an "unable to write 'random state'" error message?
222
223
224Sometimes the openssl command line utility does not abort with
225a "PRNG not seeded" error message, but complains that it is
226"unable to write 'random state'". This message refers to the
227default seeding file (see previous answer). A possible reason
228is that no default filename is known because neither RANDFILE
229nor HOME is set. (Versions up to 0.9.6 used file ".rnd" in the
230current directory in this case, but this has changed with 0.9.6a.)
231
232
0ae485dc
RL
233* How do I create certificates or certificate requests?
234
235Check out the CA.pl(1) manual page. This provides a simple wrapper round
236the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check
237out the manual pages for the individual utilities and the certificate
238extensions documentation (currently in doc/openssl.txt).
239
240
241* Why can't I create certificate requests?
242
243You typically get the error:
244
245 unable to find 'distinguished_name' in config
246 problems making Certificate Request
247
248This is because it can't find the configuration file. Check out the
249DIAGNOSTICS section of req(1) for more information.
250
251
252* Why does <SSL program> fail with a certificate verify error?
253
254This problem is usually indicated by log messages saying something like
255"unable to get local issuer certificate" or "self signed certificate".
256When a certificate is verified its root CA must be "trusted" by OpenSSL
257this typically means that the CA certificate must be placed in a directory
258or file and the relevant program configured to read it. The OpenSSL program
259'verify' behaves in a similar way and issues similar error messages: check
260the verify(1) program manual page for more information.
261
262
263* Why can I only use weak ciphers when I connect to a server using OpenSSL?
264
265This is almost certainly because you are using an old "export grade" browser
266which only supports weak encryption. Upgrade your browser to support 128 bit
267ciphers.
268
269
270* How can I create DSA certificates?
271
272Check the CA.pl(1) manual page for a DSA certificate example.
273
274
275* Why can't I make an SSL connection to a server using a DSA certificate?
276
277Typically you'll see a message saying there are no shared ciphers when
278the same setup works fine with an RSA certificate. There are two possible
279causes. The client may not support connections to DSA servers most web
280browsers (including Netscape and MSIE) only support connections to servers
281supporting RSA cipher suites. The other cause is that a set of DH parameters
282has not been supplied to the server. DH parameters can be created with the
283dhparam(1) command and loaded using the SSL_CTX_set_tmp_dh() for example:
284check the source to s_server in apps/s_server.c for an example.
285
286
287* How can I remove the passphrase on a private key?
288
289Firstly you should be really *really* sure you want to do this. Leaving
290a private key unencrypted is a major security risk. If you decide that
291you do have to do this check the EXAMPLES sections of the rsa(1) and
292dsa(1) manual pages.
293
294
1a7b2d33
DSH
295* Why can't I use OpenSSL certificates with SSL client authentication?
296
297What will typically happen is that when a server requests authentication
298it will either not include your certificate or tell you that you have
299no client certificates (Netscape) or present you with an empty list box
300(MSIE). The reason for this is that when a server requests a client
301certificate it includes a list of CAs names which it will accept. Browsers
302will only let you select certificates from the list on the grounds that
303there is little point presenting a certificate which the server will
304reject.
305
306The solution is to add the relevant CA certificate to your servers "trusted
307CA list". How you do this depends on the server sofware in uses. You can
308print out the servers list of acceptable CAs using the OpenSSL s_client tool:
309
310openssl s_client -connect www.some.host:443 -prexit
311
959f67d6 312If your server only requests certificates on certain URLs then you may need
1a7b2d33
DSH
313to manually issue an HTTP GET command to get the list when s_client connects:
314
315GET /some/page/needing/a/certificate.html
316
317If your CA does not appear in the list then this confirms the problem.
318
319
320* Why does my browser give a warning about a mismatched hostname?
321
322Browsers expect the server's hostname to match the value in the commonName
323(CN) field of the certificate. If it does not then you get a warning.
324
325
0ae485dc
RL
326[BUILD] =======================================================================
327
49976df5
UM
328* Why does the linker complain about undefined symbols?
329
cacbb51e 330Maybe the compilation was interrupted, and make doesn't notice that
49976df5
UM
331something is missing. Run "make clean; make".
332
333If you used ./Configure instead of ./config, make sure that you
334selected the right target. File formats may differ slightly between
335OS versions (for example sparcv8/sparcv9, or a.out/elf).
336
0816bc22
UM
337In case you get errors about the following symbols, use the config
338option "no-asm", as described in INSTALL:
339
340 BF_cbc_encrypt, BF_decrypt, BF_encrypt, CAST_cbc_encrypt,
341 CAST_decrypt, CAST_encrypt, RC4, RC5_32_cbc_encrypt, RC5_32_decrypt,
342 RC5_32_encrypt, bn_add_words, bn_div_words, bn_mul_add_words,
343 bn_mul_comba4, bn_mul_comba8, bn_mul_words, bn_sqr_comba4,
344 bn_sqr_comba8, bn_sqr_words, bn_sub_words, des_decrypt3,
345 des_ede3_cbc_encrypt, des_encrypt, des_encrypt2, des_encrypt3,
346 des_ncbc_encrypt, md5_block_asm_host_order, sha1_block_asm_data_order
347
569be071 348If none of these helps, you may want to try using the current snapshot.
49976df5
UM
349If the problem persists, please submit a bug report.
350
351
0ae485dc 352* Why does the OpenSSL test fail with "bc: command not found"?
2b670ea2 353
0ae485dc
RL
354You didn't install "bc", the Unix calculator. If you want to run the
355tests, get GNU bc from ftp://ftp.gnu.org or from your OS distributor.
2b670ea2 356
2b670ea2 357
a6ed5dd6 358* Why does the OpenSSL test fail with "bc: 1 no implemented"?
0ae485dc 359
1417f2dc
RL
360On some SCO installations or versions, bc has a bug that gets triggered
361when you run the test suite (using "make test"). The message returned is
a6ed5dd6 362"bc: 1 not implemented".
1417f2dc
RL
363
364The best way to deal with this is to find another implementation of bc
365and compile/install it. GNU bc (see http://www.gnu.org/software/software.html
366for download instructions) can be safely used, for example.
0ae485dc
RL
367
368
6bc847e4 369* Why does the OpenSSL compilation fail on Alpha Tru64 Unix?
0ae485dc 370
6bc847e4 371On some Alpha installations running Tru64 Unix and Compaq C, the compilation
0ae485dc
RL
372of crypto/sha/sha_dgst.c fails with the message 'Fatal: Insufficient virtual
373memory to continue compilation.' As far as the tests have shown, this may be
374a compiler bug. What happens is that it eats up a lot of resident memory
375to build something, probably a table. The problem is clearly in the
376optimization code, because if one eliminates optimization completely (-O0),
377the compilation goes through (and the compiler consumes about 2MB of resident
378memory instead of 240MB or whatever one's limit is currently).
379
380There are three options to solve this problem:
381
3821. set your current data segment size soft limit higher. Experience shows
383that about 241000 kbytes seems to be enough on an AlphaServer DS10. You do
384this with the command 'ulimit -Sd nnnnnn', where 'nnnnnn' is the number of
385kbytes to set the limit to.
386
3872. If you have a hard limit that is lower than what you need and you can't
388get it changed, you can compile all of OpenSSL with -O0 as optimization
389level. This is however not a very nice thing to do for those who expect to
390get the best result from OpenSSL. A bit more complicated solution is the
391following:
392
393----- snip:start -----
394 make DIRS=crypto SDIRS=sha "`grep '^CFLAG=' Makefile.ssl | \
395 sed -e 's/ -O[0-9] / -O0 /'`"
396 rm `ls crypto/*.o crypto/sha/*.o | grep -v 'sha_dgst\.o'`
397 make
398----- snip:end -----
399
400This will only compile sha_dgst.c with -O0, the rest with the optimization
401level chosen by the configuration process. When the above is done, do the
402test and installation and you're set.
403
404
405* Why does the OpenSSL compilation fail with "ar: command not found"?
406
407Getting this message is quite usual on Solaris 2, because Sun has hidden
408away 'ar' and other development commands in directories that aren't in
409$PATH by default. One of those directories is '/usr/ccs/bin'. The
410quickest way to fix this is to do the following (it assumes you use sh
411or any sh-compatible shell):
412
413----- snip:start -----
414 PATH=${PATH}:/usr/ccs/bin; export PATH
415----- snip:end -----
416
417and then redo the compilation. What you should really do is make sure
418'/usr/ccs/bin' is permanently in your $PATH, for example through your
419'.profile' (again, assuming you use a sh-compatible shell).
420
421
422* Why does the OpenSSL compilation fail on Win32 with VC++?
423
424Sometimes, you may get reports from VC++ command line (cl) that it
425can't find standard include files like stdio.h and other weirdnesses.
426One possible cause is that the environment isn't correctly set up.
427To solve that problem, one should run VCVARS32.BAT which is found in
428the 'bin' subdirectory of the VC++ installation directory (somewhere
429under 'Program Files'). This needs to be done prior to running NMAKE,
430and the changes are only valid for the current DOS session.
431
432
433[PROG] ========================================================================
434
435* Is OpenSSL thread-safe?
436
437Yes (with limitations: an SSL connection may not concurrently be used
438by multiple threads). On Windows and many Unix systems, OpenSSL
439automatically uses the multi-threaded versions of the standard
440libraries. If your platform is not one of these, consult the INSTALL
441file.
442
443Multi-threaded applications must provide two callback functions to
444OpenSSL. This is described in the threads(3) manpage.
e8dbc159 445
afee764c 446
46e80a30
DSH
447* I've compiled a program under Windows and it crashes: why?
448
449This is usually because you've missed the comment in INSTALL.W32. You
450must link with the multithreaded DLL version of the VC++ runtime library
451otherwise the conflict will cause a program to crash: typically on the
452first BIO related read or write operation.
453
454
c5a3b7e7
DSH
455* How do I read or write a DER encoded buffer using the ASN1 functions?
456
457You have two options. You can either use a memory BIO in conjunction
458with the i2d_XXX_bio() or d2i_XXX_bio() functions or you can use the
459i2d_XXX(), d2i_XXX() functions directly. Since these are often the
460cause of grief here are some code fragments using PKCS7 as an example:
461
462unsigned char *buf, *p;
463int len;
464
465len = i2d_PKCS7(p7, NULL);
7cae5f9f 466buf = OPENSSL_malloc(len); /* or Malloc, error checking omitted */
c5a3b7e7
DSH
467p = buf;
468i2d_PKCS7(p7, &p);
469
470At this point buf contains the len bytes of the DER encoding of
471p7.
472
473The opposite assumes we already have len bytes in buf:
474
475unsigned char *p;
476p = buf;
477p7 = d2i_PKCS7(NULL, &p, len);
478
479At this point p7 contains a valid PKCS7 structure of NULL if an error
480occurred. If an error occurred ERR_print_errors(bio) should give more
481information.
482
483The reason for the temporary variable 'p' is that the ASN1 functions
484increment the passed pointer so it is ready to read or write the next
485structure. This is often a cause of problems: without the temporary
486variable the buffer pointer is changed to point just after the data
487that has been read or written. This may well be uninitialized data
488and attempts to free the buffer will have unpredictable results
489because it no longer points to the same address.
490
491
84b65340
DSH
492* I've tried using <M_some_evil_pkcs12_macro> and I get errors why?
493
494This usually happens when you try compiling something using the PKCS#12
495macros with a C++ compiler. There is hardly ever any need to use the
496PKCS#12 macros in a program, it is much easier to parse and create
497PKCS#12 files using the PKCS12_parse() and PKCS12_create() functions
498documented in doc/openssl.txt and with examples in demos/pkcs12. The
499'pkcs12' application has to use the macros because it prints out
500debugging information.
501
502
35af460f
DSH
503* I've called <some function> and it fails, why?
504
02859fb7
BM
505Before submitting a report or asking in one of the mailing lists, you
506should try to determine the cause. In particular, you should call
35af460f 507ERR_print_errors() or ERR_print_errors_fp() after the failed call
02859fb7
BM
508and see if the message helps. Note that the problem may occur earlier
509than you think -- you should check for errors after every call where
510it is possible, otherwise the actual problem may be hidden because
511some OpenSSL functions clear the error state.
35af460f
DSH
512
513
514* I just get a load of numbers for the error output, what do they mean?
515
516The actual format is described in the ERR_print_errors() manual page.
517You should call the function ERR_load_crypto_strings() before hand and
518the message will be output in text form. If you can't do this (for example
519it is a pre-compiled binary) you can use the errstr utility on the error
520code itself (the hex digits after the second colon).
521
522
46e80a30
DSH
523* Why do I get errors about unknown algorithms?
524
525This can happen under several circumstances such as reading in an
526encrypted private key or attempting to decrypt a PKCS#12 file. The cause
527is forgetting to load OpenSSL's table of algorithms with
528OpenSSL_add_all_algorithms(). See the manual page for more information.
529
530
e8dbc159
RL
531* Why can't the OpenSSH configure script detect OpenSSL?
532
a116afa4
LJ
533Several reasons for problems with the automatic detection exist.
534OpenSSH requires at least version 0.9.5a of the OpenSSL libraries.
535Sometimes the distribution has installed an older version in the system
536locations that is detected instead of a new one installed. The OpenSSL
537library might have been compiled for another CPU or another mode (32/64 bits).
538Permissions might be wrong.
539
540The general answer is to check the config.log file generated when running
541the OpenSSH configure script. It should contain the detailed information
542on why the OpenSSL library was not detected or considered incompatible.
31efc3a7 543
0ae485dc 544* Can I use OpenSSL's SSL library with non-blocking I/O?
bf55ece1 545
0ae485dc 546Yes; make sure to read the SSL_get_error(3) manual page!
bf55ece1 547
0ae485dc
RL
548A pitfall to avoid: Don't assume that SSL_read() will just read from
549the underlying transport or that SSL_write() will just write to it --
550it is also possible that SSL_write() cannot do any useful work until
551there is data to read, or that SSL_read() cannot do anything until it
552is possible to send data. One reason for this is that the peer may
553request a new TLS/SSL handshake at any time during the protocol,
554requiring a bi-directional message exchange; both SSL_read() and
555SSL_write() will try to continue any pending handshake.
bf55ece1 556
bf55ece1 557
19732245
LJ
558* Why doesn't my server application receive a client certificate?
559
560Due to the TLS protocol definition, a client will only send a certificate,
561if explicitely asked by the server. Use the SSL_VERIFY_PEER flag of the
562SSL_CTX_set_verify() function to enable the use of client certificates.
563
564
0ae485dc 565===============================================================================
bf55ece1 566