If you think there is a security problem, have you checked the security on the file?
Something that might help (no guarantee) is to use the DEFINE to tell the loader to report things as it goes along. If you aren't careful, you can get a very large amount of output from this, but in the case of an error such as yours, you probably would only have to look at the end of the output to see what it was doing when it got the error.
The description, copied from the RLD manual is:
Loader Diagnostic Message Verbosity Level
In order to get diagnostic output from rld regarding loading of library files, resolution
of symbol names and search details for files and symbols, users have to define a
=_RLDVERBOSE define on Guardian or _RLDVERBOSE environment variable on
OSS giving it a verbosity level.
Verbosity levels are:
0 - default (as though this specification is absent)
1 - none (no output to hometerm/stderr)
2 - warnings and errors
3 - also show files loaded
4 - also show symbol resolution
5 - same as 3, plus file search details
6 - same as 4, plus file search details
7 - same as 4, plus symbol search details
8 - all the above
9 - suppress warnings, report only errors
The syntax for specifying these values is as follows:
Guardian:
add DEFINE = _RLDVERBOSE, class MAP, file #<verbose-level>
OSS:
export _RLDVERBOSE=<verbose-level>
The RLD manual describes the procedures used for dynamic linking, but I believe static linking is just dynamic linking done by the process startup code, so I'm pretty sure this DEFINE is effective for static linking, too. In your case, I think you would be best served by verbose-level 5, but feel free to try other levels.
It occurs to me that it might not be libcrypto.so that is the one with the error, but one of the dlls loaded by a reference from libcrypto.so. If that is the case, then I think the details _RLDVERBOSE will give you would show which dll really is the one causing the problem.