יום שני, מאי 13, 2019

Error running context: An error occurred during SSL communication at /usr/share/perl5/Git/SVN.pm line 148.

בשעה טובה ומוצלחת מספר הפצות עברו להצפנת ברירת מחדל של TLS 1.2 רק שלצערי יש עדיין ספקים שלא תומכים בזה כמו שצריך בגלל הגדרה מסויימת בשרתים שלהם.

אחד הדברים שנפגעו מזה זה כל מה שמשתמש ב serf ו tls.

ספקים שדאגו להתכונן לעניין (כמו apache ו github) לא נפגעו ומאפשרים לבצע checkout :

  svn co https://svn.apache.org/repos/asf/subversion/trunk subversion 
A    subversion/build
A    subversion/build/ac-macros
A    subversion/build/generator
A    subversion/build/generator/swig
A    subversion/build/generator/util
A    subversion/build/generator/templates
A    subversion/.editorconfig
A    subversion/build/generator/swig/external_runtime.py
A    subversion/README
.
.
.


אבל יש ספקים אחרים בהם התוצאה היא שאי אפשר לבצע clone / checkout מהם ומקבלים את הדבר הבא :

git svn clone https://cloudservice.com/project/trunk

Initialized empty Git repository in /tmp/svn/trunk/.git/
Can't create session: Unable to connect to a repository at URL 'https://cloudservice.com/project/trunk': Error running context: An error occurred during SSL communication at /usr/share/perl5/Git/SVN.pm line 148.

וגם ב subversion  :

svn checkout https://cloudservice.com/project/trunk .  
svn: E170013: Unable to connect to a repository at URL 'https://cloudservice.com/project/trunk'
svn: E120171: Error running context: An error occurred during SSL communication

לאחר חיפוש גיליתי שהבעיה היא בהצעת הצופן של הספק :

openssl s_client -connect cloudservice.com:443 2>/dev/null |grep 'Cipher is'
New, (NONE), Cipher is (NONE)

אצל ספקים אחרים שאין את הבעיה הזאת כמו github ו apache הפלט יהיה :

openssl s_client -connect github.com:443 2>/dev/null |grep 'Cipher is'
New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256

openssl s_client -connect svn.apache.org:443 2>/dev/null |grep 'Cipher is'
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384

השרתים בהם יש בעייה לבצע checkout  ,  כן מספרים שהם תומכים ב TLS 1.2 אבל יש בעייה בהצעה עצמה :

New, (NONE), Cipher is (NONE)
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000


המעקף היחיד שמצאתי לדבר הזה הוא שימוש בקובץ openssl.cnf מיוחד עבור השירות הזה :

diff openssl.cnf unsecure_openssl.cnf 
361c361,362
< MinProtocol = TLSv1.2
---
> #MinProtocol = TLSv1.2
> MinProtocol = none
והשימוש כך :

$ OPENSSL_CONF=/tmp/unsecure_openssl.cnf git svn clone https://cloudservice.com/project/trunk                                                             
Initialized empty Git repository in /tmp/svn/trunk/.git/
r1 = 50dd6cc1cc8224a37e5bac80a5ba6ad88e01a96a (refs/remotes/git-svn)
        A        ar/messages/extragear-pim/kmobiletools.po
.
.
.
זהוא פתרון עקום ומחייב שימוש במשתנה הסביבה OPENSSL_CONF רק בשביל האפליקציה הספציפית שצריך, אבל לפחות זה לא פוגע בכל המערכת שלכם ועדיין אפשר לעבוד עם הספק הבעייתי.

אין תגובות:

הוסף רשומת תגובה