[Crypt::SSLeay] Compile problems on Solaris

[Crypt::SSLeay] Compile problems on Solaris

am 02.11.2006 16:46:04 von saju.paul

Hello Joshua,
Attempting to build and install Crypt::SSLeay with cpan on my Sun machine.
Solaris 9 is the OS and the compile environment is the SunStudio11; the C
(cc) and C++ (CC ) compiler version are Sun C 5.8. Version of OpenSSL
installed on the system 0.9.8d. If there is any other information that I
have not included let me know and I'll send them along.

Thanks & Regards,
Saju Panikulam

cpan build output
-----------------

cpan[5]> install Crypt::SSLeay
Running install for module Crypt::SSLeay
Running make for C/CH/CHAMAS/Crypt-SSLeay-0.51.tar.gz
CPAN: Digest::SHA loaded ok
Checksum for /.cpan/sources/authors/id/C/CH/CHAMAS/Crypt-SSLeay-0.51.tar. gz
ok
Scanning cache //.cpan/build for sizes
Deleting from cache: /.cpan/build/Net_SSLeay.pm-1.30 (10.8>10.0 MB)
CPAN: Archive::Tar loaded ok
Crypt-SSLeay-0.51/
Crypt-SSLeay-0.51/t/
Crypt-SSLeay-0.51/t/net_ssl.t
Crypt-SSLeay-0.51/t/ssl_context.t
Crypt-SSLeay-0.51/lib/
Crypt-SSLeay-0.51/lib/Crypt/
Crypt-SSLeay-0.51/lib/Crypt/SSLeay/
Crypt-SSLeay-0.51/lib/Crypt/SSLeay/MainContext.pm
Crypt-SSLeay-0.51/lib/Crypt/SSLeay/Conn.pm
Crypt-SSLeay-0.51/lib/Crypt/SSLeay/X509.pm
Crypt-SSLeay-0.51/lib/Crypt/SSLeay/Err.pm
Crypt-SSLeay-0.51/lib/Crypt/SSLeay/CTX.pm
Crypt-SSLeay-0.51/lib/Net/
Crypt-SSLeay-0.51/lib/Net/SSL.pm
Crypt-SSLeay-0.51/certs/
Crypt-SSLeay-0.51/certs/ca-bundle.crt
Crypt-SSLeay-0.51/certs/notacakeynopass.pem
Crypt-SSLeay-0.51/certs/notacacert.pem
Crypt-SSLeay-0.51/MANIFEST
Crypt-SSLeay-0.51/typemap
Crypt-SSLeay-0.51/MANIFEST.SKIP
Crypt-SSLeay-0.51/SSLeay.pm
Crypt-SSLeay-0.51/CHANGES
Crypt-SSLeay-0.51/lwp-ssl-test
Crypt-SSLeay-0.51/net_ssl_test
Crypt-SSLeay-0.51/SSLeay.xs
Crypt-SSLeay-0.51/README
Crypt-SSLeay-0.51/Makefile.PL
Removing previously used /.cpan/build/Crypt-SSLeay-0.51

CPAN.pm: Going to build C/CH/CHAMAS/Crypt-SSLeay-0.51.tar.gz

/usr/lib does not seem to contain the SSLeay library files
Found the following OpenSSL installations:
OpenSSL 0.9.8 /usr/local/ssl
OpenSSL 0.9.8 /usr
Which OpenSSL build path do you want to link against? [/usr/local/ssl]

================================================
BUILD INFORMATION
================================================

ssl dir: /usr/local/ssl
libraries: -lssl -lcrypto -lgcc -lRSAglue -lrsaref
include dir: /usr/local/ssl/include
ssl header: openssl/ssl.h
ssl candidate: /usr/local/ssl; /usr/local/ssl/include/openssl; OpenSSL
0.9.8

================================================

Checking if your kit is complete...
Looks good
Note (probably harmless): No library found for -lgcc
Note (probably harmless): No library found for -lRSAglue
Note (probably harmless): No library found for -lrsaref
Writing Makefile for Crypt::SSLeay
cp lib/Crypt/SSLeay/X509.pm blib/lib/Crypt/SSLeay/X509.pm
cp lib/Net/SSL.pm blib/lib/Net/SSL.pm
cp SSLeay.pm blib/lib/Crypt/SSLeay.pm
cp lib/Crypt/SSLeay/MainContext.pm blib/lib/Crypt/SSLeay/MainContext.pm
cp lib/Crypt/SSLeay/Conn.pm blib/lib/Crypt/SSLeay/Conn.pm
cp lib/Crypt/SSLeay/CTX.pm blib/lib/Crypt/SSLeay/CTX.pm
cp lib/Crypt/SSLeay/Err.pm blib/lib/Crypt/SSLeay/Err.pm
/opt/ActivePerl-5.8/bin/perl
opt/ActivePerl-5.8/lib/ExtUtils/xsubpp -typemap
/opt/ActivePerl-5.8/lib/ExtUtils/typemap -typemap typemap SSLeay.xs >
SSLeay.xsc && mv SSLeay.xsc SSLeay.c
cc -c -I/usr/local/ssl/include -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DU
SE_SITECUSTOMIZE -DNO_HASH_SEED -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -
O -DVERSION=\"0.51\" -DXS_VERSION=\"0.51\" -KPIC
"-I/opt/ActivePerl-5.8/lib/CORE" SSLeay.c
"SSLeay.xs", line 252: warning: argument #2 is incompatible with prototype:
prototype: pointer to function(pointer to const struct ssl_st {int
version, int type, pointer to struct ssl_method_st {..} method, pointer to
struct bio_st {..} rbio, pointer to struct bio_st {..} wbio, pointer to
struct bio_st {..} bbio, int rwstate, int in_handshake, pointer to
function(..) returning int handshake_func, int server, int new_session, int
quiet_shutdown, int shutdown, int state, int rstate, pointer to struct
buf_mem_st {..} init_buf, pointer to void init_msg, int init_num, int
init_off, pointer to unsigned char packet, unsigned int packet_length,
pointer to struct ssl2_state_st {..} s2, pointer to struct ssl3_state_st
{..} s3, pointer to struct dtls1_state_st {..} d1, int read_ahead, pointer
to function(..) returning void msg_callback, pointer to void
msg_callback_arg, int hit, pointer to struct X509_VERIFY_PARAM_st {..}
param, pointer to struct stack_st {..} cipher_list, pointer to struct
stack_st {..} cipher_list_by_id, pointer to struct evp_cipher_ctx_st {..}
enc_read_ctx, pointer to const struct env_md_st {..} read_hash, pointer to
struct comp_ctx_st {..} expand, pointer to struct evp_cipher_ctx_st {..}
enc_write_ctx, pointer to const struct env_md_st {..} write_hash, pointer to
struct comp_ctx_st {..} compress, pointer to struct cert_st {..} cert,
unsigned int sid_ctx_length, array[32] of unsigned char sid_ctx, pointer to
struct ssl_session_st {..} session, pointer to function(..) returning int
generate_session_id, int verify_mode, pointer to function(..) returning int
verify_callback, pointer to function(..) returning void info_callback, int
error, int error_code, pointer to struct ssl_ctx_st {..} ctx, int debug,
long verify_result, struct crypto_ex_data_st {..} ex_data, pointer to struct
stack_st {..} client_CA, int references, unsigned long options, unsigned
long mode, long max_cert_list, int first_packet, int client_version}, int,
int) returning void : "/usr/local/ssl/include/openssl/ssl.h", line 1451
argument : pointer to function(pointer to struct ssl_st {int
version, int type, pointer to struct ssl_method_st {..} method, pointer to
struct bio_st {..} rbio, pointer to struct bio_st {..} wbio, pointer to
struct bio_st {..} bbio, int rwstate, int in_handshake, pointer to
function(..) returning int handshake_func, int server, int new_session, int
quiet_shutdown, int shutdown, int state, int rstate, pointer to struct
buf_mem_st {..} init_buf, pointer to void init_msg, int init_num, int
init_off, pointer to unsigned char packet, unsigned int packet_length,
pointer to struct ssl2_state_st {..} s2, pointer to struct ssl3_state_st
{..} s3, pointer to struct dtls1_state_st {..} d1, int read_ahead, pointer
to function(..) returning void msg_callback, pointer to void
msg_callback_arg, int hit, pointer to struct X509_VERIFY_PARAM_st {..}
param, pointer to struct stack_st {..} cipher_list, pointer to struct
stack_st {..} cipher_list_by_id, pointer to struct evp_cipher_ctx_st {..}
enc_read_ctx, pointer to const struct env_md_st {..} read_hash, pointer to
struct comp_ctx_st {..} expand, pointer to struct evp_cipher_ctx_st {..}
enc_write_ctx, pointer to const struct env_md_st {..} write_hash, pointer to
struct comp_ctx_st {..} compress, pointer to struct cert_st {..} cert,
unsigned int sid_ctx_length, array[32] of unsigned char sid_ctx, pointer to
struct ssl_session_st {..} session, pointer to function(..) returning int
generate_session_id, int verify_mode, pointer to function(..) returning int
verify_callback, pointer to function(..) returning void info_callback, int
error, int error_code, pointer to struct ssl_ctx_st {..} ctx, int debug,
long verify_result, struct crypto_ex_data_st {..} ex_data, pointer to struct
stack_st {..} client_CA, int references, unsigned long options, unsigned
long mode, long max_cert_list, int first_packet, int client_version}, int,
int) returning void
Running Mkbootstrap for Crypt::SSLeay ()
chmod 644 SSLeay.bs
rm -f blib/arch/auto/Crypt/SSLeay/SSLeay.so
LD_RUN_PATH="/usr/local/ssl/lib"
cc -G -L/usr/lib -L/usr/ccs/lib -L/opt/SUNWspro/WS6U2/lib SSLeay.o -o
blib/arch/auto/Crypt/SSLeay/SSLeay.so \
-L/usr/local/ssl/lib -lssl -lcrypto \

chmod 755 blib/arch/auto/Crypt/SSLeay/SSLeay.so
cp SSLeay.bs blib/arch/auto/Crypt/SSLeay/SSLeay.bs
chmod 644 blib/arch/auto/Crypt/SSLeay/SSLeay.bs
Manifying blib/man3/Crypt::SSLeay.3
make -- OK
Running make test
PERL_DL_NONLAZY=1 /opt/ActivePerl-5.8/bin/perl "-MExtUtils::Command::MM"
"-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/net_ssl........dubious
Test returned status 0 (wstat 139, 0x8b)
t/ssl_context....dubious
Test returned status 0 (wstat 139, 0x8b)
FAILED--2 test scripts could be run, alas--no output ever seen
*** Error code 255
make: Fatal error: Command failed for target `test_dynamic'
make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
Failed during this command:
CHAMAS/Crypt-SSLeay-0.51.tar.gz : make_test NO

cpan[6]>

Re: [Crypt::SSLeay] Compile problems on Solaris

am 03.11.2006 15:11:29 von lawrence

> Hello Joshua,
> Attempting to build and install Crypt::SSLeay with cpan on my Sun machine.
> Solaris 9 is the OS and the compile environment is the SunStudio11; the C
> (cc) and C++ (CC ) compiler version are Sun C 5.8. Version of OpenSSL
> installed on the system 0.9.8d. If there is any other information that I
> have not included let me know and I'll send them along.
>
> Thanks & Regards,
> Saju Panikulam
>


I posted about this a few days ago -- you need to make a minor change
in work with the latest OpenSSL libraries.

Near line 107 of SSLeay.xs, either change SSLeay_add_all_algorithms() to
SSLeay_add_ssl_algorithms() or add a call to SSL_library_init()

make; make test

Marvel at how it now works.

RE: [Crypt::SSLeay] Compile problems on Solaris

am 04.11.2006 13:36:06 von saju.paul

Thanks. Read about the fix to SSLeay.xs before I got your reply. Added
SSL_library_init() at line #125. That change resolved the 'make test'
failure; now both tests work and the install phase completes too.

But I'm not able to successfully complete a SSL handshake for a https
session using Crypt::SSLeay. The other Perl module that I installed is
IO::Socket::SSL. The odd thing is if I remove the Perl module Crypt::SSLeay
with ppm (Perl Package Manager part of the Perl distribution from Active
State) the https connection is made and everything works fine but it does
not appear to be validating the X509 certificate it is sent from the server
with the CA certificate. In our Perl script we setup the environment
variable HTTPS_CA_FILE and it points to a self-signed X509 certificate file.
The same self-signed certificate file and it's private key is used on the
Server side. This method seems to work perfectly well on a Windows box
using the SSLeay.DLL but is causing a SSL negotiation failure on our Sun
machine. Thoughts... Is there anyway I can trace the handshake to see
where it might be failing.
Thanks & Regards,
Saju Panikulam
-----Original Message-----
From: lawrence@cluon.com [mailto:lawrence@cluon.com]
Sent: Friday, November 03, 2006 9:11 AM
To: libwww@perl.org
Cc: Saju Paul
Subject: Re: [Crypt::SSLeay] Compile problems on Solaris

> Hello Joshua,
> Attempting to build and install Crypt::SSLeay with cpan on my Sun machine.
> Solaris 9 is the OS and the compile environment is the SunStudio11; the C
> (cc) and C++ (CC ) compiler version are Sun C 5.8. Version of OpenSSL
> installed on the system 0.9.8d. If there is any other information that I
> have not included let me know and I'll send them along.
>
> Thanks & Regards,
> Saju Panikulam
>


I posted about this a few days ago -- you need to make a minor change
in work with the latest OpenSSL libraries.

Near line 107 of SSLeay.xs, either change SSLeay_add_all_algorithms() to
SSLeay_add_ssl_algorithms() or add a call to SSL_library_init()

make; make test

Marvel at how it now works.




This message (including any attachments) contains confidential
and/or proprietary information intended only for the addressee.
Any unauthorized disclosure, copying, distribution or reliance on
the contents of this information is strictly prohibited and may
constitute a violation of law. If you are not the intended
recipient, please notify the sender immediately by responding to
this e-mail, and delete the message from your system. If you
have any questions about this e-mail please notify the sender
immediately.