Hi,
I have attached the sample server and client programs for your
consideration. As these are minimal sample codes that reproduce my problem,
error handling is not done.
To run the server, you need to provide the port on the command line
To run the client, you need to provide host and port where server is
listening for ssl connections on the command line.

> > >For me this seems that server do not want to accept this
> > >proposition because:
> > > - do not have RSA support (maybe)
> > > - do not have SHA support (maybe)
> > > - do not have DES support (maybe) or DES40 is too
> > weak.

As you would see in the server code, there are no explicit restrictions
except for the fact that both server and client set the ssl method as SSLv3
and ssl cipher list as "EXP-DES-CBC-SHA". So I am not sure if the support
for RSA / SHA / DES is disabled.

> > Well ... as per my understanding, the cipher support is
> > property of the crypto library. And my client and server both
> > use the same crypto library. So I wonder why would the server
> > reject the clients request.
> Yes, but you have control what ciphers should be used.
If you are suggesting the use of SSL_set_cipher_list(), I have already used
it. If you are talking about some other approach, could you please elaborate
more?

>
> But after some testing I think that incompatible SSL3/TLS1
> method may cause problem (as suggested by girish1729).
>
> For example, running server with command:
> $ openssl s_server -key key.pem -cert cert.pem -tls1
I am not sure if what you are trying here represents the same scenario that
I am talking about. Here you are explicitly using tls1 method for server and
hence the connection attempt will surely fail. But this is not the case with
my application. I am setting ssl method as SSLv3 in both server and client
and still the server refuses the connection :-(

> And on server side we see:
> 8064:error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version
> number:s3_srvr.c:685:
> My suggestion is to display errors after bad SSL_accept()
> in server code, for example:
> char buf[256];
> u_long err;
>
> while ((err = ERR_get_error()) != 0) {
> ERR_error_string_n(err, buf, sizeof(buf));
> fprintf(stderr, "%s", buf);
> }
I did try this and all I get is
"error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher"
Googling for this error message did not return any helful information.

> other methods may be callback function at state or msg layer.
I will have to try this. Any pointer in this direction will be helpful

Kyle,
in your response you mentioned something about export ciphers. Could you
take a look at the code and comment on "whether server really requires
non-export cipher suits"? Because my understanding is that the server
doesn't having any such restriction :-(

I am reiterating here that all the 4 binaries, sample_server, sample_client,
s_server and s_client are using the same ssl library. I confirmed that with
ldd. So the question still remains ...
Why sample_server reject connection request from s_client, whereas s_server
works just fine?

Thanks a lot for your responses,
~ Urjit

DISCLAIMER
==========
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Pvt. Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of this message. Persistent Systems 
Pvt. Ltd. does not accept any liability for virus infected mails.

Attachment: sample_client.c
Description: Binary data

Attachment: sample_server.c
Description: Binary data

Reply via email to