FAQ revision 162911
159191SkrisOpenSSL - Frequently Asked Questions 259191Skris-------------------------------------- 359191Skris 476866Skris[MISC] Miscellaneous questions 576866Skris 659191Skris* Which is the current version of OpenSSL? 759191Skris* Where is the documentation? 859191Skris* How can I contact the OpenSSL developers? 976866Skris* Where can I get a compiled version of OpenSSL? 1076866Skris* Why aren't tools like 'autoconf' and 'libtool' used? 1189837Skris* What is an 'engine' version? 12109998Smarkm* How do I check the authenticity of the OpenSSL distribution? 1376866Skris 1476866Skris[LEGAL] Legal questions 1576866Skris 1659191Skris* Do I need patent licenses to use OpenSSL? 1776866Skris* Can I use OpenSSL with GPL software? 1876866Skris 1976866Skris[USER] Questions on using the OpenSSL applications 2076866Skris 2159191Skris* Why do I get a "PRNG not seeded" error message? 2279998Skris* Why do I get an "unable to write 'random state'" error message? 2359191Skris* How do I create certificates or certificate requests? 2459191Skris* Why can't I create certificate requests? 2559191Skris* Why does <SSL program> fail with a certificate verify error? 2668651Skris* Why can I only use weak ciphers when I connect to a server using OpenSSL? 2759191Skris* How can I create DSA certificates? 2859191Skris* Why can't I make an SSL connection using a DSA certificate? 2968651Skris* How can I remove the passphrase on a private key? 3076866Skris* Why can't I use OpenSSL certificates with SSL client authentication? 3176866Skris* Why does my browser give a warning about a mismatched hostname? 3289837Skris* How do I install a CA certificate into a browser? 33109998Smarkm* Why is OpenSSL x509 DN output not conformant to RFC2253? 34160814Ssimon* What is a "128 bit certificate"? Can I create one with OpenSSL? 3576866Skris 3676866Skris[BUILD] Questions about building and testing OpenSSL 3776866Skris 3876866Skris* Why does the linker complain about undefined symbols? 3968651Skris* Why does the OpenSSL test fail with "bc: command not found"? 4068651Skris* Why does the OpenSSL test fail with "bc: 1 no implemented"? 41109998Smarkm* Why does the OpenSSL test fail with "bc: stack empty"? 4289837Skris* Why does the OpenSSL compilation fail on Alpha Tru64 Unix? 4368651Skris* Why does the OpenSSL compilation fail with "ar: command not found"? 4476866Skris* Why does the OpenSSL compilation fail on Win32 with VC++? 45100936Snectar* What is special about OpenSSL on Redhat? 46109998Smarkm* Why does the OpenSSL compilation fail on MacOS X? 47100936Snectar* Why does the OpenSSL test suite fail on MacOS X? 48109998Smarkm* Why does the OpenSSL test suite fail in BN_sqr test [on a 64-bit platform]? 49109998Smarkm* Why does OpenBSD-i386 build fail on des-586.s with "Unimplemented segment type"? 50160814Ssimon* Why does the OpenSSL test suite fail in sha512t on x86 CPU? 51160814Ssimon* Why does compiler fail to compile sha512.c? 52160814Ssimon* Test suite still fails, what to do? 5359191Skris 5476866Skris[PROG] Questions about programming with OpenSSL 5559191Skris 5676866Skris* Is OpenSSL thread-safe? 5776866Skris* I've compiled a program under Windows and it crashes: why? 5876866Skris* How do I read or write a DER encoded buffer using the ASN1 functions? 59142425Snectar* OpenSSL uses DER but I need BER format: does OpenSSL support BER? 6076866Skris* I've tried using <M_some_evil_pkcs12_macro> and I get errors why? 6176866Skris* I've called <some function> and it fails, why? 6276866Skris* I just get a load of numbers for the error output, what do they mean? 6376866Skris* Why do I get errors about unknown algorithms? 6476866Skris* Why can't the OpenSSH configure script detect OpenSSL? 6576866Skris* Can I use OpenSSL's SSL library with non-blocking I/O? 6679998Skris* Why doesn't my server application receive a client certificate? 67109998Smarkm* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier? 68142425Snectar* I think I've detected a memory leak, is this a bug? 6976866Skris 7076866Skris=============================================================================== 7176866Skris 7276866Skris[MISC] ======================================================================== 7376866Skris 7459191Skris* Which is the current version of OpenSSL? 7559191Skris 7659191SkrisThe current version is available from <URL: http://www.openssl.org>. 77162911SsimonOpenSSL 0.9.8d was released on September 28th, 2006. 7859191Skris 7959191SkrisIn addition to the current stable release, you can also access daily 8059191Skrissnapshots of the OpenSSL development version at <URL: 8159191Skrisftp://ftp.openssl.org/snapshot/>, or get it by anonymous CVS access. 8259191Skris 8359191Skris 8459191Skris* Where is the documentation? 8559191Skris 8659191SkrisOpenSSL is a library that provides cryptographic functionality to 8759191Skrisapplications such as secure web servers. Be sure to read the 8859191Skrisdocumentation of the application you want to use. The INSTALL file 8959191Skrisexplains how to install this library. 9059191Skris 9159191SkrisOpenSSL includes a command line utility that can be used to perform a 9259191Skrisvariety of cryptographic functions. It is described in the openssl(1) 9359191Skrismanpage. Documentation for developers is currently being written. A 9459191Skrisfew manual pages already are available; overviews over libcrypto and 9559191Skrislibssl are given in the crypto(3) and ssl(3) manpages. 9659191Skris 9759191SkrisThe OpenSSL manpages are installed in /usr/local/ssl/man/ (or a 9859191Skrisdifferent directory if you specified one as described in INSTALL). 9959191SkrisIn addition, you can read the most current versions at 10059191Skris<URL: http://www.openssl.org/docs/>. 10159191Skris 10259191SkrisFor information on parts of libcrypto that are not yet documented, you 10359191Skrismight want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's 10459191Skrispredecessor, at <URL: http://www.columbia.edu/~ariel/ssleay/>. Much 10559191Skrisof this still applies to OpenSSL. 10659191Skris 10759191SkrisThere is some documentation about certificate extensions and PKCS#12 10859191Skrisin doc/openssl.txt 10959191Skris 11059191SkrisThe original SSLeay documentation is included in OpenSSL as 11159191Skrisdoc/ssleay.txt. It may be useful when none of the other resources 11259191Skrishelp, but please note that it reflects the obsolete version SSLeay 11359191Skris0.6.6. 11459191Skris 11559191Skris 11659191Skris* How can I contact the OpenSSL developers? 11759191Skris 11859191SkrisThe README file describes how to submit bug reports and patches to 11959191SkrisOpenSSL. Information on the OpenSSL mailing lists is available from 12059191Skris<URL: http://www.openssl.org>. 12159191Skris 12259191Skris 12376866Skris* Where can I get a compiled version of OpenSSL? 12476866Skris 125127128SnectarYou can finder pointers to binary distributions in 126127128Snectarhttp://www.openssl.org/related/binaries.html . 127127128Snectar 12876866SkrisSome applications that use OpenSSL are distributed in binary form. 12976866SkrisWhen using such an application, you don't need to install OpenSSL 13076866Skrisyourself; the application will include the required parts (e.g. DLLs). 13176866Skris 132127128SnectarIf you want to build OpenSSL on a Windows system and you don't have 13376866Skrisa C compiler, read the "Mingw32" section of INSTALL.W32 for information 13476866Skrison how to obtain and install the free GNU C compiler. 13576866Skris 13676866SkrisA number of Linux and *BSD distributions include OpenSSL. 13776866Skris 13876866Skris 13976866Skris* Why aren't tools like 'autoconf' and 'libtool' used? 14076866Skris 14176866Skrisautoconf will probably be used in future OpenSSL versions. If it was 14276866Skrisless Unix-centric, it might have been used much earlier. 14376866Skris 14489837Skris* What is an 'engine' version? 14576866Skris 14689837SkrisWith version 0.9.6 OpenSSL was extended to interface to external crypto 14789837Skrishardware. This was realized in a special release '0.9.6-engine'. With 148160814Ssimonversion 0.9.7 the changes were merged into the main development line, 149160814Ssimonso that the special release is no longer necessary. 15089837Skris 151109998Smarkm* How do I check the authenticity of the OpenSSL distribution? 152109998Smarkm 153109998SmarkmWe provide MD5 digests and ASC signatures of each tarball. 154109998SmarkmUse MD5 to check that a tarball from a mirror site is identical: 155109998Smarkm 156109998Smarkm md5sum TARBALL | awk '{print $1;}' | cmp - TARBALL.md5 157109998Smarkm 158109998SmarkmYou can check authenticity using pgp or gpg. You need the OpenSSL team 159160814Ssimonmember public key used to sign it (download it from a key server, see a 160160814Ssimonlist of keys at <URL: http://www.openssl.org/about/>). Then 161109998Smarkmjust do: 162109998Smarkm 163109998Smarkm pgp TARBALL.asc 164109998Smarkm 16576866Skris[LEGAL] ======================================================================= 16676866Skris 16759191Skris* Do I need patent licenses to use OpenSSL? 16859191Skris 16959191SkrisThe patents section of the README file lists patents that may apply to 17059191Skrisyou if you want to use OpenSSL. For information on intellectual 17159191Skrisproperty rights, please consult a lawyer. The OpenSSL team does not 17259191Skrisoffer legal advice. 17359191Skris 174160814SsimonYou can configure OpenSSL so as not to use IDEA, MDC2 and RC5 by using 175160814Ssimon ./config no-idea no-mdc2 no-rc5 17659191Skris 17759191Skris 17876866Skris* Can I use OpenSSL with GPL software? 17959191Skris 18076866SkrisOn many systems including the major Linux and BSD distributions, yes (the 18176866SkrisGPL does not place restrictions on using libraries that are part of the 18276866Skrisnormal operating system distribution). 18359191Skris 18476866SkrisOn other systems, the situation is less clear. Some GPL software copyright 18576866Skrisholders claim that you infringe on their rights if you use OpenSSL with 18676866Skristheir software on operating systems that don't normally include OpenSSL. 18759191Skris 18876866SkrisIf you develop open source software that uses OpenSSL, you may find it 18989837Skrisuseful to choose an other license than the GPL, or state explicitly that 19076866Skris"This program is released under the GPL with the additional exemption that 19176866Skriscompiling, linking, and/or using OpenSSL is allowed." If you are using 19276866SkrisGPL software developed by others, you may want to ask the copyright holder 19376866Skrisfor permission to use their software with OpenSSL. 19459191Skris 19576866Skris 19676866Skris[USER] ======================================================================== 19776866Skris 19859191Skris* Why do I get a "PRNG not seeded" error message? 19959191Skris 20059191SkrisCryptographic software needs a source of unpredictable data to work 20159191Skriscorrectly. Many open source operating systems provide a "randomness 202111147Snectardevice" (/dev/urandom or /dev/random) that serves this purpose. 203111147SnectarAll OpenSSL versions try to use /dev/urandom by default; starting with 204111147Snectarversion 0.9.7, OpenSSL also tries /dev/random if /dev/urandom is not 205111147Snectaravailable. 20659191Skris 207111147SnectarOn other systems, applications have to call the RAND_add() or 208111147SnectarRAND_seed() function with appropriate data before generating keys or 209111147Snectarperforming public key encryption. (These functions initialize the 210111147Snectarpseudo-random number generator, PRNG.) Some broken applications do 211111147Snectarnot do this. As of version 0.9.5, the OpenSSL functions that need 212111147Snectarrandomness report an error if the random number generator has not been 213111147Snectarseeded with at least 128 bits of randomness. If this error occurs and 214111147Snectaris not discussed in the documentation of the application you are 215111147Snectarusing, please contact the author of that application; it is likely 216111147Snectarthat it never worked correctly. OpenSSL 0.9.5 and later make the 217111147Snectarerror visible by refusing to perform potentially insecure encryption. 21859191Skris 219111147SnectarIf you are using Solaris 8, you can add /dev/urandom and /dev/random 220111147Snectardevices by installing patch 112438 (Sparc) or 112439 (x86), which are 221111147Snectaravailable via the Patchfinder at <URL: http://sunsolve.sun.com> 222111147Snectar(Solaris 9 includes these devices by default). For /dev/random support 223111147Snectarfor earlier Solaris versions, see Sun's statement at 224111147Snectar<URL: http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsrdb/27606&zone_32=SUNWski> 225111147Snectar(the SUNWski package is available in patch 105710). 226111147Snectar 22779998SkrisOn systems without /dev/urandom and /dev/random, it is a good idea to 22879998Skrisuse the Entropy Gathering Demon (EGD); see the RAND_egd() manpage for 22979998Skrisdetails. Starting with version 0.9.7, OpenSSL will automatically look 23079998Skrisfor an EGD socket at /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool and 23179998Skris/etc/entropy. 23259191Skris 23379998SkrisMost components of the openssl command line utility automatically try 23479998Skristo seed the random number generator from a file. The name of the 23579998Skrisdefault seeding file is determined as follows: If environment variable 23679998SkrisRANDFILE is set, then it names the seeding file. Otherwise if 23779998Skrisenvironment variable HOME is set, then the seeding file is $HOME/.rnd. 23879998SkrisIf neither RANDFILE nor HOME is set, versions up to OpenSSL 0.9.6 will 23979998Skrisuse file .rnd in the current directory while OpenSSL 0.9.6a uses no 24079998Skrisdefault seeding file at all. OpenSSL 0.9.6b and later will behave 24189837Skrissimilarly to 0.9.6a, but will use a default of "C:\" for HOME on 24279998SkrisWindows systems if the environment variable has not been set. 24359191Skris 24479998SkrisIf the default seeding file does not exist or is too short, the "PRNG 24579998Skrisnot seeded" error message may occur. 24659191Skris 24779998SkrisThe openssl command line utility will write back a new state to the 24879998Skrisdefault seeding file (and create this file if necessary) unless 24979998Skristhere was no sufficient seeding. 25079998Skris 25179998SkrisPointing $RANDFILE to an Entropy Gathering Daemon socket does not work. 25279998SkrisUse the "-rand" option of the OpenSSL command line tools instead. 25379998SkrisThe $RANDFILE environment variable and $HOME/.rnd are only used by the 25479998SkrisOpenSSL command line tools. Applications using the OpenSSL library 25579998Skrisprovide their own configuration options to specify the entropy source, 25679998Skrisplease check out the documentation coming the with application. 25779998Skris 25859191Skris 25979998Skris* Why do I get an "unable to write 'random state'" error message? 26079998Skris 26179998Skris 26279998SkrisSometimes the openssl command line utility does not abort with 26379998Skrisa "PRNG not seeded" error message, but complains that it is 26479998Skris"unable to write 'random state'". This message refers to the 26579998Skrisdefault seeding file (see previous answer). A possible reason 26679998Skrisis that no default filename is known because neither RANDFILE 26779998Skrisnor HOME is set. (Versions up to 0.9.6 used file ".rnd" in the 26879998Skriscurrent directory in this case, but this has changed with 0.9.6a.) 26979998Skris 27079998Skris 27176866Skris* How do I create certificates or certificate requests? 27276866Skris 27376866SkrisCheck out the CA.pl(1) manual page. This provides a simple wrapper round 27476866Skristhe 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check 27576866Skrisout the manual pages for the individual utilities and the certificate 27676866Skrisextensions documentation (currently in doc/openssl.txt). 27776866Skris 27876866Skris 27976866Skris* Why can't I create certificate requests? 28076866Skris 28176866SkrisYou typically get the error: 28276866Skris 28376866Skris unable to find 'distinguished_name' in config 28476866Skris problems making Certificate Request 28576866Skris 28676866SkrisThis is because it can't find the configuration file. Check out the 28776866SkrisDIAGNOSTICS section of req(1) for more information. 28876866Skris 28976866Skris 29076866Skris* Why does <SSL program> fail with a certificate verify error? 29176866Skris 29276866SkrisThis problem is usually indicated by log messages saying something like 29376866Skris"unable to get local issuer certificate" or "self signed certificate". 29476866SkrisWhen a certificate is verified its root CA must be "trusted" by OpenSSL 29576866Skristhis typically means that the CA certificate must be placed in a directory 29676866Skrisor file and the relevant program configured to read it. The OpenSSL program 29776866Skris'verify' behaves in a similar way and issues similar error messages: check 29876866Skristhe verify(1) program manual page for more information. 29976866Skris 30076866Skris 30176866Skris* Why can I only use weak ciphers when I connect to a server using OpenSSL? 30276866Skris 30376866SkrisThis is almost certainly because you are using an old "export grade" browser 30476866Skriswhich only supports weak encryption. Upgrade your browser to support 128 bit 30576866Skrisciphers. 30676866Skris 30776866Skris 30876866Skris* How can I create DSA certificates? 30976866Skris 31076866SkrisCheck the CA.pl(1) manual page for a DSA certificate example. 31176866Skris 31276866Skris 31376866Skris* Why can't I make an SSL connection to a server using a DSA certificate? 31476866Skris 31576866SkrisTypically you'll see a message saying there are no shared ciphers when 31676866Skristhe same setup works fine with an RSA certificate. There are two possible 31776866Skriscauses. The client may not support connections to DSA servers most web 31876866Skrisbrowsers (including Netscape and MSIE) only support connections to servers 31976866Skrissupporting RSA cipher suites. The other cause is that a set of DH parameters 32076866Skrishas not been supplied to the server. DH parameters can be created with the 32176866Skrisdhparam(1) command and loaded using the SSL_CTX_set_tmp_dh() for example: 32276866Skrischeck the source to s_server in apps/s_server.c for an example. 32376866Skris 32476866Skris 32576866Skris* How can I remove the passphrase on a private key? 32676866Skris 32776866SkrisFirstly you should be really *really* sure you want to do this. Leaving 32876866Skrisa private key unencrypted is a major security risk. If you decide that 32976866Skrisyou do have to do this check the EXAMPLES sections of the rsa(1) and 33076866Skrisdsa(1) manual pages. 33176866Skris 33276866Skris 33376866Skris* Why can't I use OpenSSL certificates with SSL client authentication? 33476866Skris 33576866SkrisWhat will typically happen is that when a server requests authentication 33676866Skrisit will either not include your certificate or tell you that you have 33776866Skrisno client certificates (Netscape) or present you with an empty list box 33876866Skris(MSIE). The reason for this is that when a server requests a client 33976866Skriscertificate it includes a list of CAs names which it will accept. Browsers 34076866Skriswill only let you select certificates from the list on the grounds that 34176866Skristhere is little point presenting a certificate which the server will 34276866Skrisreject. 34376866Skris 34476866SkrisThe solution is to add the relevant CA certificate to your servers "trusted 34589837SkrisCA list". How you do this depends on the server software in uses. You can 34676866Skrisprint out the servers list of acceptable CAs using the OpenSSL s_client tool: 34776866Skris 34876866Skrisopenssl s_client -connect www.some.host:443 -prexit 34976866Skris 35076866SkrisIf your server only requests certificates on certain URLs then you may need 35176866Skristo manually issue an HTTP GET command to get the list when s_client connects: 35276866Skris 35376866SkrisGET /some/page/needing/a/certificate.html 35476866Skris 35576866SkrisIf your CA does not appear in the list then this confirms the problem. 35676866Skris 35776866Skris 35876866Skris* Why does my browser give a warning about a mismatched hostname? 35976866Skris 36076866SkrisBrowsers expect the server's hostname to match the value in the commonName 36176866Skris(CN) field of the certificate. If it does not then you get a warning. 36276866Skris 36376866Skris 36489837Skris* How do I install a CA certificate into a browser? 36589837Skris 36689837SkrisThe usual way is to send the DER encoded certificate to the browser as 36789837SkrisMIME type application/x-x509-ca-cert, for example by clicking on an appropriate 36889837Skrislink. On MSIE certain extensions such as .der or .cacert may also work, or you 36989837Skriscan import the certificate using the certificate import wizard. 37089837Skris 37189837SkrisYou can convert a certificate to DER form using the command: 37289837Skris 37389837Skrisopenssl x509 -in ca.pem -outform DER -out ca.der 37489837Skris 37589837SkrisOccasionally someone suggests using a command such as: 37689837Skris 37789837Skrisopenssl pkcs12 -export -out cacert.p12 -in cacert.pem -inkey cakey.pem 37889837Skris 37989837SkrisDO NOT DO THIS! This command will give away your CAs private key and 38089837Skrisreduces its security to zero: allowing anyone to forge certificates in 38189837Skriswhatever name they choose. 38289837Skris 383109998Smarkm* Why is OpenSSL x509 DN output not conformant to RFC2253? 38489837Skris 385109998SmarkmThe ways to print out the oneline format of the DN (Distinguished Name) have 386109998Smarkmbeen extended in version 0.9.7 of OpenSSL. Using the new X509_NAME_print_ex() 387109998Smarkminterface, the "-nameopt" option could be introduded. See the manual 388109998Smarkmpage of the "openssl x509" commandline tool for details. The old behaviour 389109998Smarkmhas however been left as default for the sake of compatibility. 390109998Smarkm 391160814Ssimon* What is a "128 bit certificate"? Can I create one with OpenSSL? 392160814Ssimon 393160814SsimonThe term "128 bit certificate" is a highly misleading marketing term. It does 394160814Ssimon*not* refer to the size of the public key in the certificate! A certificate 395160814Ssimoncontaining a 128 bit RSA key would have negligible security. 396160814Ssimon 397160814SsimonThere were various other names such as "magic certificates", "SGC 398160814Ssimoncertificates", "step up certificates" etc. 399160814Ssimon 400160814SsimonYou can't generally create such a certificate using OpenSSL but there is no 401160814Ssimonneed to any more. Nowadays web browsers using unrestricted strong encryption 402160814Ssimonare generally available. 403160814Ssimon 404160814SsimonWhen there were tight export restrictions on the export of strong encryption 405160814Ssimonsoftware from the US only weak encryption algorithms could be freely exported 406160814Ssimon(initially 40 bit and then 56 bit). It was widely recognised that this was 407160814Ssimoninadequate. A relaxation the rules allowed the use of strong encryption but 408160814Ssimononly to an authorised server. 409160814Ssimon 410160814SsimonTwo slighly different techniques were developed to support this, one used by 411160814SsimonNetscape was called "step up", the other used by MSIE was called "Server Gated 412160814SsimonCryptography" (SGC). When a browser initially connected to a server it would 413160814Ssimoncheck to see if the certificate contained certain extensions and was issued by 414160814Ssimonan authorised authority. If these test succeeded it would reconnect using 415160814Ssimonstrong encryption. 416160814Ssimon 417160814SsimonOnly certain (initially one) certificate authorities could issue the 418160814Ssimoncertificates and they generally cost more than ordinary certificates. 419160814Ssimon 420160814SsimonAlthough OpenSSL can create certificates containing the appropriate extensions 421160814Ssimonthe certificate would not come from a permitted authority and so would not 422160814Ssimonbe recognized. 423160814Ssimon 424160814SsimonThe export laws were later changed to allow almost unrestricted use of strong 425160814Ssimonencryption so these certificates are now obsolete. 426160814Ssimon 427160814Ssimon 42876866Skris[BUILD] ======================================================================= 42976866Skris 43059191Skris* Why does the linker complain about undefined symbols? 43159191Skris 43259191SkrisMaybe the compilation was interrupted, and make doesn't notice that 43359191Skrissomething is missing. Run "make clean; make". 43459191Skris 43559191SkrisIf you used ./Configure instead of ./config, make sure that you 43659191Skrisselected the right target. File formats may differ slightly between 43759191SkrisOS versions (for example sparcv8/sparcv9, or a.out/elf). 43859191Skris 43959191SkrisIn case you get errors about the following symbols, use the config 44059191Skrisoption "no-asm", as described in INSTALL: 44159191Skris 44259191Skris BF_cbc_encrypt, BF_decrypt, BF_encrypt, CAST_cbc_encrypt, 44359191Skris CAST_decrypt, CAST_encrypt, RC4, RC5_32_cbc_encrypt, RC5_32_decrypt, 44459191Skris RC5_32_encrypt, bn_add_words, bn_div_words, bn_mul_add_words, 44559191Skris bn_mul_comba4, bn_mul_comba8, bn_mul_words, bn_sqr_comba4, 44659191Skris bn_sqr_comba8, bn_sqr_words, bn_sub_words, des_decrypt3, 44759191Skris des_ede3_cbc_encrypt, des_encrypt, des_encrypt2, des_encrypt3, 44859191Skris des_ncbc_encrypt, md5_block_asm_host_order, sha1_block_asm_data_order 44959191Skris 45059191SkrisIf none of these helps, you may want to try using the current snapshot. 45159191SkrisIf the problem persists, please submit a bug report. 45259191Skris 45359191Skris 45476866Skris* Why does the OpenSSL test fail with "bc: command not found"? 45559191Skris 45676866SkrisYou didn't install "bc", the Unix calculator. If you want to run the 45776866Skristests, get GNU bc from ftp://ftp.gnu.org or from your OS distributor. 45859191Skris 45959191Skris 46076866Skris* Why does the OpenSSL test fail with "bc: 1 no implemented"? 46159191Skris 46276866SkrisOn some SCO installations or versions, bc has a bug that gets triggered 46376866Skriswhen you run the test suite (using "make test"). The message returned is 46476866Skris"bc: 1 not implemented". 46559191Skris 46676866SkrisThe best way to deal with this is to find another implementation of bc 46776866Skrisand compile/install it. GNU bc (see http://www.gnu.org/software/software.html 46876866Skrisfor download instructions) can be safely used, for example. 46976866Skris 47076866Skris 471109998Smarkm* Why does the OpenSSL test fail with "bc: stack empty"? 472109998Smarkm 473109998SmarkmOn some DG/ux versions, bc seems to have a too small stack for calculations 474109998Smarkmthat the OpenSSL bntest throws at it. This gets triggered when you run the 475109998Smarkmtest suite (using "make test"). The message returned is "bc: stack empty". 476109998Smarkm 477109998SmarkmThe best way to deal with this is to find another implementation of bc 478109998Smarkmand compile/install it. GNU bc (see http://www.gnu.org/software/software.html 479109998Smarkmfor download instructions) can be safely used, for example. 480109998Smarkm 481109998Smarkm 48289837Skris* Why does the OpenSSL compilation fail on Alpha Tru64 Unix? 48376866Skris 48489837SkrisOn some Alpha installations running Tru64 Unix and Compaq C, the compilation 48576866Skrisof crypto/sha/sha_dgst.c fails with the message 'Fatal: Insufficient virtual 48676866Skrismemory to continue compilation.' As far as the tests have shown, this may be 48776866Skrisa compiler bug. What happens is that it eats up a lot of resident memory 48876866Skristo build something, probably a table. The problem is clearly in the 48976866Skrisoptimization code, because if one eliminates optimization completely (-O0), 49076866Skristhe compilation goes through (and the compiler consumes about 2MB of resident 49176866Skrismemory instead of 240MB or whatever one's limit is currently). 49276866Skris 49376866SkrisThere are three options to solve this problem: 49476866Skris 49576866Skris1. set your current data segment size soft limit higher. Experience shows 49676866Skristhat about 241000 kbytes seems to be enough on an AlphaServer DS10. You do 49776866Skristhis with the command 'ulimit -Sd nnnnnn', where 'nnnnnn' is the number of 49876866Skriskbytes to set the limit to. 49976866Skris 50076866Skris2. If you have a hard limit that is lower than what you need and you can't 50176866Skrisget it changed, you can compile all of OpenSSL with -O0 as optimization 50276866Skrislevel. This is however not a very nice thing to do for those who expect to 50376866Skrisget the best result from OpenSSL. A bit more complicated solution is the 50476866Skrisfollowing: 50576866Skris 50676866Skris----- snip:start ----- 507160814Ssimon make DIRS=crypto SDIRS=sha "`grep '^CFLAG=' Makefile.ssl | \ 50876866Skris sed -e 's/ -O[0-9] / -O0 /'`" 50976866Skris rm `ls crypto/*.o crypto/sha/*.o | grep -v 'sha_dgst\.o'` 51076866Skris make 51176866Skris----- snip:end ----- 51276866Skris 51376866SkrisThis will only compile sha_dgst.c with -O0, the rest with the optimization 51476866Skrislevel chosen by the configuration process. When the above is done, do the 51576866Skristest and installation and you're set. 51676866Skris 517160814Ssimon3. Reconfigure the toolkit with no-sha0 option to leave out SHA0. It 518160814Ssimonshould not be used and is not used in SSL/TLS nor any other recognized 519160814Ssimonprotocol in either case. 52076866Skris 521160814Ssimon 52276866Skris* Why does the OpenSSL compilation fail with "ar: command not found"? 52376866Skris 52476866SkrisGetting this message is quite usual on Solaris 2, because Sun has hidden 52576866Skrisaway 'ar' and other development commands in directories that aren't in 52676866Skris$PATH by default. One of those directories is '/usr/ccs/bin'. The 52776866Skrisquickest way to fix this is to do the following (it assumes you use sh 52876866Skrisor any sh-compatible shell): 52976866Skris 53076866Skris----- snip:start ----- 53176866Skris PATH=${PATH}:/usr/ccs/bin; export PATH 53276866Skris----- snip:end ----- 53376866Skris 53476866Skrisand then redo the compilation. What you should really do is make sure 53576866Skris'/usr/ccs/bin' is permanently in your $PATH, for example through your 53676866Skris'.profile' (again, assuming you use a sh-compatible shell). 53776866Skris 53876866Skris 53976866Skris* Why does the OpenSSL compilation fail on Win32 with VC++? 54076866Skris 54176866SkrisSometimes, you may get reports from VC++ command line (cl) that it 54276866Skriscan't find standard include files like stdio.h and other weirdnesses. 54376866SkrisOne possible cause is that the environment isn't correctly set up. 544111147SnectarTo solve that problem for VC++ versions up to 6, one should run 545111147SnectarVCVARS32.BAT which is found in the 'bin' subdirectory of the VC++ 546111147Snectarinstallation directory (somewhere under 'Program Files'). For VC++ 547111147Snectarversion 7 (and up?), which is also called VS.NET, the file is called 548111147SnectarVSVARS32.BAT instead. 549111147SnectarThis needs to be done prior to running NMAKE, and the changes are only 550111147Snectarvalid for the current DOS session. 55176866Skris 55276866Skris 553100936Snectar* What is special about OpenSSL on Redhat? 554100936Snectar 555100936SnectarRed Hat Linux (release 7.0 and later) include a preinstalled limited 556100936Snectarversion of OpenSSL. For patent reasons, support for IDEA, RC5 and MDC2 557100936Snectaris disabled in this version. The same may apply to other Linux distributions. 558100936SnectarUsers may therefore wish to install more or all of the features left out. 559100936Snectar 560100936SnectarTo do this you MUST ensure that you do not overwrite the openssl that is in 561100936Snectar/usr/bin on your Red Hat machine. Several packages depend on this file, 562100936Snectarincluding sendmail and ssh. /usr/local/bin is a good alternative choice. The 563100936Snectarlibraries that come with Red Hat 7.0 onwards have different names and so are 564100936Snectarnot affected. (eg For Red Hat 7.2 they are /lib/libssl.so.0.9.6b and 565100936Snectar/lib/libcrypto.so.0.9.6b with symlinks /lib/libssl.so.2 and 566100936Snectar/lib/libcrypto.so.2 respectively). 567100936Snectar 568100936SnectarPlease note that we have been advised by Red Hat attempting to recompile the 569100936Snectaropenssl rpm with all the cryptography enabled will not work. All other 570100936Snectarpackages depend on the original Red Hat supplied openssl package. It is also 571100936Snectarworth noting that due to the way Red Hat supplies its packages, updates to 572100936Snectaropenssl on each distribution never change the package version, only the 573100936Snectarbuild number. For example, on Red Hat 7.1, the latest openssl package has 574100936Snectarversion number 0.9.6 and build number 9 even though it contains all the 575100936Snectarrelevant updates in packages up to and including 0.9.6b. 576100936Snectar 577100936SnectarA possible way around this is to persuade Red Hat to produce a non-US 578100936Snectarversion of Red Hat Linux. 579100936Snectar 580100936SnectarFYI: Patent numbers and expiry dates of US patents: 581100936SnectarMDC-2: 4,908,861 13/03/2007 582100936SnectarIDEA: 5,214,703 25/05/2010 583100936SnectarRC5: 5,724,428 03/03/2015 584100936Snectar 585100936Snectar 586109998Smarkm* Why does the OpenSSL compilation fail on MacOS X? 587109998Smarkm 588109998SmarkmIf the failure happens when trying to build the "openssl" binary, with 589109998Smarkma large number of undefined symbols, it's very probable that you have 590109998SmarkmOpenSSL 0.9.6b delivered with the operating system (you can find out by 591109998Smarkmrunning '/usr/bin/openssl version') and that you were trying to build 592109998SmarkmOpenSSL 0.9.7 or newer. The problem is that the loader ('ld') in 593109998SmarkmMacOS X has a misfeature that's quite difficult to go around. 594109998SmarkmLook in the file PROBLEMS for a more detailed explanation and for possible 595109998Smarkmsolutions. 596109998Smarkm 597109998Smarkm 598100936Snectar* Why does the OpenSSL test suite fail on MacOS X? 599100936Snectar 600100936SnectarIf the failure happens when running 'make test' and the RC4 test fails, 601100936Snectarit's very probable that you have OpenSSL 0.9.6b delivered with the 602100936Snectaroperating system (you can find out by running '/usr/bin/openssl version') 603100936Snectarand that you were trying to build OpenSSL 0.9.6d. The problem is that 604100936Snectarthe loader ('ld') in MacOS X has a misfeature that's quite difficult to 605100936Snectargo around and has linked the programs "openssl" and the test programs 606100936Snectarwith /usr/lib/libcrypto.dylib and /usr/lib/libssl.dylib instead of the 607100936Snectarlibraries you just built. 608100936SnectarLook in the file PROBLEMS for a more detailed explanation and for possible 609100936Snectarsolutions. 610100936Snectar 611109998Smarkm* Why does the OpenSSL test suite fail in BN_sqr test [on a 64-bit platform]? 612109998Smarkm 613109998SmarkmFailure in BN_sqr test is most likely caused by a failure to configure the 614109998Smarkmtoolkit for current platform or lack of support for the platform in question. 615109998SmarkmRun './config -t' and './apps/openssl version -p'. Do these platform 616109998Smarkmidentifiers match? If they don't, then you most likely failed to run 617109998Smarkm./config and you're hereby advised to do so before filing a bug report. 618109998SmarkmIf ./config itself fails to run, then it's most likely problem with your 619109998Smarkmlocal environment and you should turn to your system administrator (or 620109998Smarkmsimilar). If identifiers match (and/or no alternative identifier is 621109998Smarkmsuggested by ./config script), then the platform is unsupported. There might 622109998Smarkmor might not be a workaround. Most notably on SPARC64 platforms with GNU 623109998SmarkmC compiler you should be able to produce a working build by running 624109998Smarkm'./config -m32'. I understand that -m32 might not be what you want/need, 625109998Smarkmbut the build should be operational. For further details turn to 626109998Smarkm<openssl-dev@openssl.org>. 627109998Smarkm 628109998Smarkm* Why does OpenBSD-i386 build fail on des-586.s with "Unimplemented segment type"? 629109998Smarkm 630109998SmarkmAs of 0.9.7 assembler routines were overhauled for position independence 631109998Smarkmof the machine code, which is essential for shared library support. For 632109998Smarkmsome reason OpenBSD is equipped with an out-of-date GNU assembler which 633109998Smarkmfinds the new code offensive. To work around the problem, configure with 634111147Snectarno-asm (and sacrifice a great deal of performance) or patch your assembler 635111147Snectaraccording to <URL: http://www.openssl.org/~appro/gas-1.92.3.OpenBSD.patch>. 636109998SmarkmFor your convenience a pre-compiled replacement binary is provided at 637111147Snectar<URL: http://www.openssl.org/~appro/gas-1.92.3.static.aout.bin>. 638111147SnectarReportedly elder *BSD a.out platforms also suffer from this problem and 639111147Snectarremedy should be same. Provided binary is statically linked and should be 640111147Snectarworking across wider range of *BSD branches, not just OpenBSD. 641109998Smarkm 642160814Ssimon* Why does the OpenSSL test suite fail in sha512t on x86 CPU? 643160814Ssimon 644160814SsimonIf the test program in question fails withs SIGILL, Illegal Instruction 645160814Ssimonexception, then you more than likely to run SSE2-capable CPU, such as 646160814SsimonIntel P4, under control of kernel which does not support SSE2 647160814Ssimoninstruction extentions. See accompanying INSTALL file and 648160814SsimonOPENSSL_ia32cap(3) documentation page for further information. 649160814Ssimon 650160814Ssimon* Why does compiler fail to compile sha512.c? 651160814Ssimon 652160814SsimonOpenSSL SHA-512 implementation depends on compiler support for 64-bit 653160814Ssimoninteger type. Few elder compilers [ULTRIX cc, SCO compiler to mention a 654160814Ssimoncouple] lack support for this and therefore are incapable of compiling 655160814Ssimonthe module in question. The recommendation is to disable SHA-512 by 656160814Ssimonadding no-sha512 to ./config [or ./Configure] command line. Another 657160814Ssimonpossible alternative might be to switch to GCC. 658160814Ssimon 659160814Ssimon* Test suite still fails, what to do? 660160814Ssimon 661160814SsimonAnother common reason for failure to complete some particular test is 662160814Ssimonsimply bad code generated by a buggy component in toolchain or deficiency 663160814Ssimonin run-time environment. There are few cases documented in PROBLEMS file, 664160814Ssimonconsult it for possible workaround before you beat the drum. Even if you 665160814Ssimondon't find solution or even mention there, do reserve for possibility of 666160814Ssimona compiler bug. Compiler bugs might appear in rather bizarre ways, they 667160814Ssimonnever make sense, and tend to emerge when you least expect them. In order 668160814Ssimonto identify one, drop optimization level, e.g. by editing CFLAG line in 669160814Ssimontop-level Makefile, recompile and re-run the test. 670160814Ssimon 67176866Skris[PROG] ======================================================================== 67276866Skris 67376866Skris* Is OpenSSL thread-safe? 67476866Skris 67576866SkrisYes (with limitations: an SSL connection may not concurrently be used 67676866Skrisby multiple threads). On Windows and many Unix systems, OpenSSL 67776866Skrisautomatically uses the multi-threaded versions of the standard 67876866Skrislibraries. If your platform is not one of these, consult the INSTALL 67976866Skrisfile. 68076866Skris 68176866SkrisMulti-threaded applications must provide two callback functions to 682162911SsimonOpenSSL by calling CRYPTO_set_locking_callback() and 683162911SsimonCRYPTO_set_id_callback(). This is described in the threads(3) 684162911Ssimonmanpage. 68576866Skris 68659191Skris* I've compiled a program under Windows and it crashes: why? 68759191Skris 68889837SkrisThis is usually because you've missed the comment in INSTALL.W32. 68989837SkrisYour application must link against the same version of the Win32 69089837SkrisC-Runtime against which your openssl libraries were linked. The 69189837Skrisdefault version for OpenSSL is /MD - "Multithreaded DLL". 69259191Skris 69389837SkrisIf you are using Microsoft Visual C++'s IDE (Visual Studio), in 69489837Skrismany cases, your new project most likely defaulted to "Debug 69589837SkrisSinglethreaded" - /ML. This is NOT interchangeable with /MD and your 69689837Skrisprogram will crash, typically on the first BIO related read or write 69789837Skrisoperation. 69859191Skris 69989837SkrisFor each of the six possible link stage configurations within Win32, 70089837Skrisyour application must link against the same by which OpenSSL was 70189837Skrisbuilt. If you are using MS Visual C++ (Studio) this can be changed 70289837Skrisby: 70389837Skris 704160814Ssimon 1. Select Settings... from the Project Menu. 705160814Ssimon 2. Select the C/C++ Tab. 706160814Ssimon 3. Select "Code Generation from the "Category" drop down list box 707160814Ssimon 4. Select the Appropriate library (see table below) from the "Use 70889837Skris run-time library" drop down list box. Perform this step for both 70989837Skris your debug and release versions of your application (look at the 71089837Skris top left of the settings panel to change between the two) 71189837Skris 71289837Skris Single Threaded /ML - MS VC++ often defaults to 71389837Skris this for the release 71489837Skris version of a new project. 71589837Skris Debug Single Threaded /MLd - MS VC++ often defaults to 71689837Skris this for the debug version 71789837Skris of a new project. 71889837Skris Multithreaded /MT 71989837Skris Debug Multithreaded /MTd 72089837Skris Multithreaded DLL /MD - OpenSSL defaults to this. 72189837Skris Debug Multithreaded DLL /MDd 72289837Skris 72389837SkrisNote that debug and release libraries are NOT interchangeable. If you 72489837Skrisbuilt OpenSSL with /MD your application must use /MD and cannot use /MDd. 72589837Skris 726160814SsimonAs per 0.9.8 the above limitation is eliminated for .DLLs. OpenSSL 727160814Ssimon.DLLs compiled with some specific run-time option [we insist on the 728160814Ssimondefault /MD] can be deployed with application compiled with different 729160814Ssimonoption or even different compiler. But there is a catch! Instead of 730160814Ssimonre-compiling OpenSSL toolkit, as you would have to with prior versions, 731160814Ssimonyou have to compile small C snippet with compiler and/or options of 732160814Ssimonyour choice. The snippet gets installed as 733160814Ssimon<install-root>/include/openssl/applink.c and should be either added to 734160814Ssimonyour application project or simply #include-d in one [and only one] 735160814Ssimonof your application source files. Failure to link this shim module 736160814Ssimoninto your application manifests itself as fatal "no OPENSSL_Applink" 737160814Ssimonrun-time error. An explicit reminder is due that in this situation 738160814Ssimon[mixing compiler options] it is as important to add CRYPTO_malloc_init 739160814Ssimonprior first call to OpenSSL. 74089837Skris 74168651Skris* How do I read or write a DER encoded buffer using the ASN1 functions? 74268651Skris 74368651SkrisYou have two options. You can either use a memory BIO in conjunction 744160814Ssimonwith the i2d_*_bio() or d2i_*_bio() functions or you can use the 745160814Ssimoni2d_*(), d2i_*() functions directly. Since these are often the 74668651Skriscause of grief here are some code fragments using PKCS7 as an example: 74768651Skris 748160814Ssimon unsigned char *buf, *p; 749160814Ssimon int len; 75068651Skris 751160814Ssimon len = i2d_PKCS7(p7, NULL); 752160814Ssimon buf = OPENSSL_malloc(len); /* or Malloc, error checking omitted */ 753160814Ssimon p = buf; 754160814Ssimon i2d_PKCS7(p7, &p); 75568651Skris 75668651SkrisAt this point buf contains the len bytes of the DER encoding of 75768651Skrisp7. 75868651Skris 75968651SkrisThe opposite assumes we already have len bytes in buf: 76068651Skris 761160814Ssimon unsigned char *p; 762160814Ssimon p = buf; 763160814Ssimon p7 = d2i_PKCS7(NULL, &p, len); 76468651Skris 76568651SkrisAt this point p7 contains a valid PKCS7 structure of NULL if an error 76668651Skrisoccurred. If an error occurred ERR_print_errors(bio) should give more 76768651Skrisinformation. 76868651Skris 76968651SkrisThe reason for the temporary variable 'p' is that the ASN1 functions 77068651Skrisincrement the passed pointer so it is ready to read or write the next 77168651Skrisstructure. This is often a cause of problems: without the temporary 77268651Skrisvariable the buffer pointer is changed to point just after the data 77368651Skristhat has been read or written. This may well be uninitialized data 77468651Skrisand attempts to free the buffer will have unpredictable results 77568651Skrisbecause it no longer points to the same address. 77668651Skris 77768651Skris 778142425Snectar* OpenSSL uses DER but I need BER format: does OpenSSL support BER? 779142425Snectar 780142425SnectarThe short answer is yes, because DER is a special case of BER and OpenSSL 781142425SnectarASN1 decoders can process BER. 782142425Snectar 783142425SnectarThe longer answer is that ASN1 structures can be encoded in a number of 784142425Snectardifferent ways. One set of ways is the Basic Encoding Rules (BER) with various 785142425Snectarpermissible encodings. A restriction of BER is the Distinguished Encoding 786142425SnectarRules (DER): these uniquely specify how a given structure is encoded. 787142425Snectar 788142425SnectarTherefore, because DER is a special case of BER, DER is an acceptable encoding 789142425Snectarfor BER. 790142425Snectar 791142425Snectar 79268651Skris* I've tried using <M_some_evil_pkcs12_macro> and I get errors why? 79368651Skris 79468651SkrisThis usually happens when you try compiling something using the PKCS#12 79568651Skrismacros with a C++ compiler. There is hardly ever any need to use the 79668651SkrisPKCS#12 macros in a program, it is much easier to parse and create 79768651SkrisPKCS#12 files using the PKCS12_parse() and PKCS12_create() functions 79868651Skrisdocumented in doc/openssl.txt and with examples in demos/pkcs12. The 79968651Skris'pkcs12' application has to use the macros because it prints out 80068651Skrisdebugging information. 80168651Skris 80268651Skris 80359191Skris* I've called <some function> and it fails, why? 80459191Skris 80568651SkrisBefore submitting a report or asking in one of the mailing lists, you 80668651Skrisshould try to determine the cause. In particular, you should call 80759191SkrisERR_print_errors() or ERR_print_errors_fp() after the failed call 80868651Skrisand see if the message helps. Note that the problem may occur earlier 80968651Skristhan you think -- you should check for errors after every call where 81068651Skrisit is possible, otherwise the actual problem may be hidden because 81168651Skrissome OpenSSL functions clear the error state. 81259191Skris 81359191Skris 81459191Skris* I just get a load of numbers for the error output, what do they mean? 81559191Skris 81659191SkrisThe actual format is described in the ERR_print_errors() manual page. 81759191SkrisYou should call the function ERR_load_crypto_strings() before hand and 81859191Skristhe message will be output in text form. If you can't do this (for example 81959191Skrisit is a pre-compiled binary) you can use the errstr utility on the error 82059191Skriscode itself (the hex digits after the second colon). 82159191Skris 82259191Skris 82359191Skris* Why do I get errors about unknown algorithms? 82459191Skris 82559191SkrisThis can happen under several circumstances such as reading in an 82659191Skrisencrypted private key or attempting to decrypt a PKCS#12 file. The cause 82759191Skrisis forgetting to load OpenSSL's table of algorithms with 82859191SkrisOpenSSL_add_all_algorithms(). See the manual page for more information. 82959191Skris 83059191Skris 83159191Skris* Why can't the OpenSSH configure script detect OpenSSL? 83259191Skris 83389837SkrisSeveral reasons for problems with the automatic detection exist. 83489837SkrisOpenSSH requires at least version 0.9.5a of the OpenSSL libraries. 83589837SkrisSometimes the distribution has installed an older version in the system 83689837Skrislocations that is detected instead of a new one installed. The OpenSSL 83789837Skrislibrary might have been compiled for another CPU or another mode (32/64 bits). 83889837SkrisPermissions might be wrong. 83959191Skris 84089837SkrisThe general answer is to check the config.log file generated when running 84189837Skristhe OpenSSH configure script. It should contain the detailed information 84289837Skrison why the OpenSSL library was not detected or considered incompatible. 84368651Skris 844120631Snectar 84576866Skris* Can I use OpenSSL's SSL library with non-blocking I/O? 84668651Skris 84776866SkrisYes; make sure to read the SSL_get_error(3) manual page! 84868651Skris 84976866SkrisA pitfall to avoid: Don't assume that SSL_read() will just read from 85076866Skristhe underlying transport or that SSL_write() will just write to it -- 85176866Skrisit is also possible that SSL_write() cannot do any useful work until 85276866Skristhere is data to read, or that SSL_read() cannot do anything until it 85376866Skrisis possible to send data. One reason for this is that the peer may 85476866Skrisrequest a new TLS/SSL handshake at any time during the protocol, 85576866Skrisrequiring a bi-directional message exchange; both SSL_read() and 85676866SkrisSSL_write() will try to continue any pending handshake. 85768651Skris 85868651Skris 85979998Skris* Why doesn't my server application receive a client certificate? 86079998Skris 86179998SkrisDue to the TLS protocol definition, a client will only send a certificate, 86289837Skrisif explicitly asked by the server. Use the SSL_VERIFY_PEER flag of the 86379998SkrisSSL_CTX_set_verify() function to enable the use of client certificates. 86479998Skris 86579998Skris 866109998Smarkm* Why does compilation fail due to an undefined symbol NID_uniqueIdentifier? 867109998Smarkm 868109998SmarkmFor OpenSSL 0.9.7 the OID table was extended and corrected. In earlier 869109998Smarkmversions, uniqueIdentifier was incorrectly used for X.509 certificates. 870109998SmarkmThe correct name according to RFC2256 (LDAP) is x500UniqueIdentifier. 871109998SmarkmChange your code to use the new name when compiling against OpenSSL 0.9.7. 872109998Smarkm 873109998Smarkm 874142425Snectar* I think I've detected a memory leak, is this a bug? 875142425Snectar 876142425SnectarIn most cases the cause of an apparent memory leak is an OpenSSL internal table 877142425Snectarthat is allocated when an application starts up. Since such tables do not grow 878142425Snectarin size over time they are harmless. 879142425Snectar 880142425SnectarThese internal tables can be freed up when an application closes using various 881160814Ssimonfunctions. Currently these include following: 882142425Snectar 883160814SsimonThread-local cleanup functions: 884142425Snectar 885160814Ssimon ERR_remove_state() 886160814Ssimon 887160814SsimonApplication-global cleanup functions that are aware of usage (and therefore 888160814Ssimonthread-safe): 889160814Ssimon 890160814Ssimon ENGINE_cleanup() and CONF_modules_unload() 891160814Ssimon 892160814Ssimon"Brutal" (thread-unsafe) Application-global cleanup functions: 893160814Ssimon 894160814Ssimon ERR_free_strings(), EVP_cleanup() and CRYPTO_cleanup_all_ex_data(). 895160814Ssimon 896160814Ssimon 89776866Skris=============================================================================== 89868651Skris 899