[Serusers] Re: [Serdev] Patched free-TLS implementation

Cesc Santasusana cesc.santasusana at nl.thalesgroup.com
Wed May 11 10:55:22 CEST 2005


Hi,

Good you found out. 

The reason i turned session caching completely off was because it was not properly configured. So, putting it on a TODO list, i disable it completely, waiting to add it later. 

Now i found out that the TLS implementation of minisip, the phone i use, was kinda broken. In my working copy i have activated and configured ser-tls with server-side caching, and it works. 

The problem is that i read that the default session caching provided by openssl is rather simple, and even that it should not be used in any production environment. That was another reason to disable it. And also that some changes in the way reads and writes are handled should be changed ... 

I will send a patch to fix all this ... 

Another thing ... the tls code needs to be more "configurable", from the config file. What is the best way to do this? Adding variables to cfx.XX files? or maybe a tls-module could do that also plus several other features?

Regards,

Cesc



Unclassified


>>> Alex Mack <amack at fhm.edu> 05/10/05 03:10PM >>>
Hi again!

Funny thing I found out: snom 190 doesn't even USE Session Caching but 
it seems to need the server to be alel to.
It doesn't request the old Session ID, every new TLS connection from the 
phone to SER is a new one without a session ID. From what I understand 
with session caching, the client, in order to refetch a session, has to 
provide the session ID given by the server in the first handshake.

Alex Mack

Alex Mack schrieb:

> Hi!
>
> I've managed to find out what's bothering the snom 190: It's the 
> missing TLS Session ID when Session Chaching is turned off.
>
> The session ID is given to the client for being able to request that 
> session later on from the server. But
>
> SSL_CTX_set_session_cache_mode( _ctx, SSL_SESS_CACHE_OFF );
>
> turned off Session Caching, so no Session ID is generated and 
> transfered and that seems to confuse the snom phones. So they answer 
> the SERVER HELLO  immediately with an ALERT and break up the 
> connection. It seems like snom190 need to have session caching turned 
> on...
>
> The snom's firmware is: snom190-SIP 3.60b 6249
>
> snom's softphone (emulating a snom 360 with firmware "snomSoft-SIP 
> 3.57q") seems to have the same problem.
>
> BTW, what was the problem with session caching in the first place? 
> Performance hit?
>
> Alex Mack
>
> Benny Ben-Ami schrieb:
>
>> Try checking the expiration date of the certificate and the time & 
>> date of
>> the phone. I once had a phone where the time was not set and he 
>> rejected the server
>> certificate due to date expiration.
>> -----Original Message-----
>> From: serdev-bounces at iptel.org [mailto:serdev-bounces at lists.iptel.org] On 
>> Behalf
>> Of Alex Mack
>> Sent: Wednesday, May 04, 2005 7:29 PM
>> To: Cesc Santasusana
>> Cc: serdev at lists.iptel.org; serusers at lists.iptel.org 
>> Subject: Re: [Serusers] Re: [Serdev] Patched free-TLS implementation
>>
>> Hi Cesc!
>>
>> I tried your previuos suggestions on changing cleint certificate 
>> check. I'm now running SSL_VERIFY_NONE. MS Messenger works again. But 
>> the snom
>> still fails.
>> Ethereal tells me the server doesn't ask for a client certificate any 
>> more.
>> Ethereal also shows that "Cipher Suite: TLS_RSA_WITH_RC4_128_SHA" was 
>> selected. So far so good, but the snom still rejects the Server Hello
>> with an Alert.
>>
>> What else have you changed? The original version worked with the snoms.
>>
>> BTW patch throws some warnings:
>>
>> # patch -i patch.core.cfg.files.diff
>> patching file cfg.y
>> Hunk #1 FAILED at 1.
>> 1 out of 6 hunks FAILED -- saving rejects to file cfg.y.rej patching 
>> file
>> cfg.lex Hunk #1 FAILED at 1.
>> 1 out of 5 hunks FAILED -- saving rejects to file cfg.lex.rej
>>
>> cfg.y.rej reads:
>> ***************
>> *** 1,5 ****
>>  /*
>> -  * $Id: cfg.y,v 1.2 2005/01/06 14:35:10 sam Exp $
>>   *
>>   *  cfg grammar
>>   *
>> --- 1,5 ----
>>  /*
>> +  * $Id: cfg.y,v 1.4 2005/05/03 08:16:35 cesc Exp $
>>   *
>>   *  cfg grammar
>>   *
>>
>> cfg.lex.rej reads:
>> ***************
>> *** 1,5 ****
>>  /*
>> -  * $Id: cfg.lex,v 1.2 2005/01/06 14:35:10 sam Exp $
>>   *
>>   * scanner for cfg files
>>   *
>> --- 1,5 ----
>>  /*
>> +  * $Id: cfg.lex,v 1.3 2005/04/11 08:18:31 cesc Exp $
>>   *
>>   * scanner for cfg files
>>   *
>>
>> Seems to be a minor mismatch, it compiles well anyway.
>>
>> Alex Mack
>>
>> Cesc Santasusana schrieb:
>>
>>  
>>
>>> Hi,
>>>
>>> Yeah ... I send it with my default config which is using client and 
>>> server
>>>   
>>
>> authentication.
>>  
>>
>>> I use this settings with minisip client (supports client side certs) 
>>> and
>>>   
>>
>> for tls between ser proxies. It works perfect.
>>  
>>
>>> To turn client authentication off, check:
>>> tls/tls_init.c  file
>>> init_ssl_ctx_behavior function
>>>
>>> the line
>>> SSL_CTX_set_verify( _ctx, SSL_VERIFY_PEER | 
>>> SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
>>>
>>> means that the server will request a certificate from the client and 
>>> if it
>>>   
>>
>> doesn't get one, it will fail.
>>  
>>
>>> Try changing it with:
>>> SSL_CTX_set_verify( _ctx, SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE, 
>>> 0); this way the server will request a cert, the client will not 
>>> provide, but
>>>   
>>
>> on the following renegotiation, the server (ser) will not ask for a 
>> cert.
>>  
>>
>>> And if you want to turn verification off ... completely ... 
>>> SSL_CTX_set_verify( _ctx, SSL_VERIFY_NONE, 0); this will also work 
>>> for you if only using tls for ser2phone ... it will not work if you 
>>> want tls
>>>   
>>
>> between proxies ... as the ser client will accept ANY certificate 
>> from the
>> ser server.
>>  
>>
>>> And then, from the prompt:
>>>
>>>   
>>>
>>>> make TLS=1 all && make TLS=1 install    ;)
>>>>  
>>>>     
>>>
>>> This whole verification thing needs to be improved and probably the
>>>   
>>
>> parameters should be changeable directly from the config file. This 
>> and many
>> other parameters should be exchangeable without the need to recompile.
>>  
>>
>>> Any volunteer for a ser-tls.README? :D
>>>
>>> Can you provide me with some extra info from the snom phones and the
>>>   
>>
>> messenger? Do it offline, so you can send me some ethereal captures 
>> and ser
>> logs ...  
>>
>>> Regards,
>>>
>>> Cesc
>>>
>>>
>>>
>>>
>>>   
>>>
>>>>>> Alex Mack <amack at fhm.edu> 05/04/05 02:01PM >>>
>>>>>>      
>>>>>>         
>>>>>
>>> Hi Cesc!
>>>
>>> I compiled in your patch.
>>>
>>> Now I'm facing a new problem: SER wants a client certificate from 
>>> the UA. Snom phones immediately reply with an ALERT and break up 
>>> connection upon the certificate requests. MS Messenger on the other 
>>> hand sends at least a reply - without certificate - and SER rejects 
>>> the Client Hello because of the missing client certificate:
>>>
>>> tls_accept: Error in SSL:
>>> tls_error: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer
>>> did not return a certificate
>>>
>>> Could you please provide some more documentation about the new TLS 
>>> options you added? It seems you've implemented support for client 
>>> certificates for a two-way certificate authorization - which would 
>>> be a good thing if supported by the UAs, which don't right now. So 
>>> how can I turn it off again and get back to server side certification?
>>>
>>> Alex Mack
>>>
>>> Cesc Santasusana schrieb:
>>>
>>>
>>>
>>>   
>>>
>>>> Hi everybody,
>>>>
>>>> The last i sent is a replacement as a whole for the original code 
>>>> sent by
>>>>     
>>>
>> P. Griffiths. Sorry i forgot to mention that.
>>  
>>
>>>> The patches for cfg.y and cfg.lex are both in the same file 
>>>> (patch.core.cfg..files.diff) within the zip. I was lazy :) I resent 
>>>> it as
>>>>     
>>>
>> a whole, and not as a diff, because i indented all the code with tabs,
>> instead of spaces (so a diff would be bigger than  just sending all the
>> files).
>>  
>>
>>>> As for the CVS thing ... i agree with Juha. Either gets into the
>>>>     
>>>
>> "official" cvs or we do something about it. The code i think is rather
>> stable as it is (i only tested on my debian linux box, soon i will 
>> try on an
>> ARM linux and i will report back on that too). For me, as long as it 
>> gets
>> into a CVS, i don't care if it is mantained against HEAD or 0.9.0 (i use
>> 0.9.0 .... so all my patches are against it).  
>>
>>>> On a more philosophical level, i understand the "quietness" on iptel's
>>>>     
>>>
>> side ... they have their own version, and make money on it. But the 
>> thing is
>> that this free version is here to stay ... it is the "problem" of
>> opensource.  
>>
>>>> Another option would be for them to release their proprietary
>>>>     
>>>
>> implementation if they feel that it is a better, more tested one.  
>>
>>>> In any case, i think that this whole thing needs to be decided fast.
>>>>
>>>> Regards!
>>>>
>>>> Cesc
>>>>
>>>>
>>>>
>>>>
>>>>  
>>>>     
>>>>
>>>>>>> Alex Mack <amack at fhm.edu> 05/03/05 01:26PM >>>
>>>>>>>
>>>>>>>        
>>>>>>>           
>>>>>>
>>>> Hi Cesc!
>>>>
>>>> Nice to have those fixes in a package.
>>>>
>>>> Is your cfg.y-patch to be applied *after* cfg.y.patch was applied or
>>>> *instead* of cfg.y.patch?
>>>>
>>>> Or is your version a patched one which replaces the original 
>>>> implementation as a whole? In that case where's cfg.lex.patch?
>>>>
>>>> Alex Mack
>>>>
>>>> Cesc Santasusana schrieb:
>>>>
>>>>
>>>>  
>>>>     
>>>>
>>>>> Hi,
>>>>>
>>>>> I really hate to be so pushy, but i dont understand how such an 
>>>>> important
>>>>>       
>>>>
>> piece of code as TLS is not moving on into CVS ... or anywhere else 
>> by this
>> matter. I will keep sending patches till i get tired (soon).
>>  
>>
>>>>> Anyway ... i thought someone may be interested in a compilation 
>>>>> fix for
>>>>>       
>>>>
>> cfg.y introduced with the tls_domains (it would not compile if the cfg.y
>> file had been patched but the tls-core files were not there); a bug 
>> fix for
>> the session caching (fixed by turning session caching and resumption 
>> off);
>> and an extension (the ability to choose the list of allowed ciphers 
>> from the
>> config file). Oh, and all the files have been tabbed, instead of 
>> spaced (for
>> indentation).
>>  
>>
>>>>> Enjoy!
>>>>>
>>>>> Cesc
>>>>>
>>>>>
>>>>>    
>>>>>       
>>>>
>>>
>>>
>>>   
>>>
>>>>> ---------------------------------------------------------------------
>>>>> ---
>>>>>
>>>>> _______________________________________________
>>>>> Serdev mailing list
>>>>> serdev at lists.iptel.org 
>>>>> http://lists.iptel.org/mailman/listinfo/serdev 
>>>>>
>>>>>
>>>>>
>>>>>    
>>>>>       
>>>>
>>>> _______________________________________________
>>>> Serusers mailing list
>>>> serusers at lists.iptel.org 
>>>> http://lists.iptel.org/mailman/listinfo/serusers 
>>>>
>>>> _______________________________________________
>>>> Serusers mailing list
>>>> serusers at lists.iptel.org 
>>>> http://lists.iptel.org/mailman/listinfo/serusers 
>>>>
>>>>
>>>>
>>>>  
>>>>     
>>>
>>>
>>>
>>>
>>>   
>>
>>
>> _______________________________________________
>> Serdev mailing list
>> serdev at lists.iptel.org 
>> http://lists.iptel.org/mailman/listinfo/serdev 
>>
>>
>>
>>  
>>
>
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org 
> http://lists.iptel.org/mailman/listinfo/serusers 
>
>

_______________________________________________
Serusers mailing list
serusers at lists.iptel.org 
http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list