בשעה טובה ומוצלחת מספר הפצות עברו ל
הצפנת ברירת מחדל של 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 רק בשביל האפליקציה הספציפית שצריך, אבל לפחות זה לא פוגע בכל המערכת שלכם ועדיין אפשר לעבוד עם הספק הבעייתי.