Cannot find serial number 372 in WAMP / Apache openssl.exe

I use the OpenSSL PHP framework for various functions, but when I do something related to OpenSSL, I get the following error: "Cannot find serial number 372 in the DLL file C: \ wamp64 \ bin \ apache \ apache2. 4.17 \ Bin \ openssl.exe ".

I do not know how to fix this at all, I searched everywhere. I would appreciate help, as I do not know how to fix this.

+6
source share
3 answers

To fix the problem, two things are needed:

1) Make sure you have no symbolic links for libeay32.dll and ssleay32.dll in your Apache bin directory (For example, mine: C: \ wamp64 \ bin \ apache \ apache2.4.23 \ bin)

If you have symbolic links (i.e. file size is 0 bytes), you need to download the DLL from Apache Lounge. For example, I grabbed two .dll files from the 64-bit version of Apache 2.4.23, located at https://www.apachelounge.com/download/

2) After restoring the .dll files, you need to make sure that WampServer does not overwrite them. WampServer 3 has a script configuration that runs every time it starts. In this script, he will overwrite these. DLL with symbolic links. You must disable this functionality. To do this, comment out the links to these two files in: C: \ wamp64 \ scripts \ config.inc.php (mine were located on lines 133 and 139).

This should allow you to enable the mod_ssl module in Apache. You also need to uncomment "Enable conf / extra / httpd-ssl.conf" after Apache has loaded properly with mod_ssl enabled. (However, you will probably have to remove most of what's out there and start as long as it includes many hard-coded paths and errors)

+9
source

... "Cannot find serial number 372 in the DLL file C: \ wamp64 \ bin \ apache \ apache2.4.17 \ bin \ openssl.exe"

I reflect on its PEM_SealInit or SSL_CONF_cmd_argv from OpenSSL 1.0.2; or ASN1_i2d_fp or SSL_SESSION_set1_id_context from OpenSSL 1.1.0.

 # OpenSSL 1.1.0 $ find $PWD -type f -iname '*.num' -exec grep " 372" {} \; ASN1_i2d_fp 372 1_1_0 EXIST::FUNCTION:STDIO SSL_SESSION_set1_id_context 372 1_1_0 EXIST::FUNCTION: ... # OpenSSL 1.0.2 $ find $PWD -type f -iname '*.num' -exec grep " 372" {} \; PEM_SealInit 372 EXIST::FUNCTION:RSA SSL_CONF_cmd_argv 372 EXIST::FUNCTION: ... 

You will need to test it using dumpbin or dumpbin dependencies . Also see How to find the exported function name from the ordinal (export in order)? in stack overflow.


Ordinals are created using <openssl src>\util\mkdef.pl . You can see the source code from OpenSSL GitHub. Here is 1.0.2 and here is 1.1.0 .

Here are the main comments on the file:

 #!/usr/local/bin/perl -w # # generate a .def file # # It does this by parsing the header files and looking for the # prototyped functions: it then prunes the output. # # Intermediary files are created, call libcrypto.num and libssl.num, # The format of these files is: # # routine-name nnnn vers info # # The "nnnn" and "vers" fields are the numeric id and version for the symbol # respectively. The "info" part is actually a colon-separated string of fields # with the following meaning: # # existence:platform:kind:algorithms # # - "existence" can be "EXIST" or "NOEXIST" depending on if the symbol is # found somewhere in the source, # - "platforms" is empty if it exists on all platforms, otherwise it contains # comma-separated list of the platform, just as they are if the symbol exists # for those platforms, or prepended with a "!" if not. This helps resolve # symbol name variants for platforms where the names are too long for the # compiler or linker, or if the systems is case insensitive and there is a # clash, or the symbol is implemented differently (see # EXPORT_VAR_AS_FUNCTION). This script assumes renaming of symbols is found # in the file crypto/symhacks.h. # The semantics for the platforms is that every item is checked against the # environment. For the negative items ("!FOO"), if any of them is false # (ie "FOO" is true) in the environment, the corresponding symbol can't be # used. For the positive itms, if all of them are false in the environment, # the corresponding symbol can't be used. Any combination of positive and # negative items are possible, and of course leave room for some redundancy. # - "kind" is "FUNCTION" or "VARIABLE". The meaning of that is obvious. # - "algorithms" is a comma-separated list of algorithm names. This helps # exclude symbols that are part of an algorithm that some user wants to # exclude. 
+1
source

I ran into the same issue on Windows and using xampp instead of Wamp.

Doing what is described in the comments of this page solved it: PHP cURL Installation .

I copied 3 .dll files from the PHP installation directory to the apache/bin and rebooted xampp.

0
source

All Articles