應用安全之github演算法限制,升級git客戶端為TSL1.2協議
最近一台伺服器上執行更新的時候,突然發現之前好好的git突然不能用了,git clone和pull等操作會報錯。
git pull github工程報錯
git命令行下執行命令時候會報錯:
error: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version while accessing
fatal: unable to access: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
在windows下圖形界面也會有報錯的報錯(TortoiseGit小烏龜的報錯)
由於https的協議中SSl3.0及以下版本,TSL1.0,TSL1.1版本存在安全隱患,這在筆者之前的文章《「WEB安全」HTTPS 協議——Web安全的基石》也提到過,gihub從2018 年2月1日對這些版本不再支持。github的公告見:
同時基於SSH協議的版本也不不再支持:
diffie-hellman-group1-sha1,diffie-hellman-group14-sha1。
所以老版本的git,ssh客戶端(僅僅支持sha1哈希演算法的客戶端)都需要升級。
關於centos6,centos7等高版本的升級,可以用yum升級,升級比較容易。本文主要說下老版本的centos 5.8等老版本os的升級,由於版本較老,需要通過源碼升級。
源碼升級openssl
在linux下基本上所有加密演算法的應用都是基於openssl的,所以升級curl、git、openssh對演算法的升級都需要先升級OpenSSL。
1、創建源碼目錄
我們新建一個目錄src存放openSSL源碼,由於OpenSSL升級可能影響很多軟體,我們先不支持升級,而生成一個新版本的OpenSSL在/usr/local/ssl目錄,這樣不影響既有版本的其他軟體。
mkdir src
cd src
2、下載openssl源碼,我們用1.0.2m版本
wget https://www.openssl.org/source/ openssl-1.0.2m.tar.gz
tar -zxvf openssl-*.tar.gz
3、編譯安裝:
cd openssl-*
./config -fpic shared && make && make install
4、添加一個動態庫路徑,並執行使其生效:
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig
升級cUrl版本
不光是github還有很多網站都是僅僅支持了TLS 1.2 ,這時候curl版本為老版本的話,也是下載不了任何東西的。而且git的https操作也是要curl的庫,所以我們先升級curl。
1、創建源碼目錄
mkdir src
cd src
2、下載curl源碼
wget http://curl.haxx.se/download/curl-7.59.0.tar.gz
tar -xzvf curl*.tar.gz
3、編譯並安裝
cd curl*
./configure --with-ssl=/usr/local/ssl --disable-ldap
注意編譯時候指定ssl類庫為我們上一步的安裝目錄。
確保已經支持Tsl然後直接安裝:
make && make install
gpg文件簽名校驗
下載的源碼為了確保安全,要校驗下文件簽名(哈希指紋),curl用的gpg校驗。筆者在以前的文章中也說過為了安全對任何官方文件下載後都要做文件校驗,關於md5和shaX類校驗過程可能大家都了解,筆者在此就不贅述。
這兒以curl源碼為例子說明下gpg文件簽名的校驗。gpg簽名不光需要源碼文件的簽名,還要需要發行者的公鑰,兩者配合才可以校驗,相對複雜一點,但是更安全可靠。
1、下載源碼和文件簽名:
源碼:
wget http://curl.haxx.se/download/ curl-7.59.0.tar.gz
文件簽名
https://curl.haxx.se/download/curl-7.59.0.tar.gz.asc
2、下載gpg公鑰
wget https://daniel.haxx.se/mykey.asc
3、導入公鑰
gpg --import mykey.asc
4、文件校驗
上面第二行中,已經說明簽名玩好,校驗沒問題,至於下面第三行和第四行的警告,由於我們下載公鑰是直接從官方下載的,沒有通過證書機構認證,所以會有警告,可以忽略。
升級git
1、下載git源碼,我們選擇新版本2.16.2
wget https://www.kernel.org/pub/software/scm/git git-2.16.2.tar.gz
tar xzf git-2.1.2.tar.gz
2、編譯安裝git
make configure
./configure --prefix=/usr/local/git --with-lib=/usr/local/ssl/
make && make install
3、做下鏈接加入到用戶環境中
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
使得配置生效
source /etc/bashrc
4、查看git版本
git version
結果已經為最新版本,版本信息如下。
git version 2.16.2
window下客戶端升級
關於window下的git客戶端,window下客戶端,請先升級git客戶端。
設置各個git 圖形客戶端:
小烏龜TortoiseGit設置
設置為升級後的git for windows的路徑。
Android Studio、IntelliJ IDEA和Visual Studio Code配置
配置類似的,修改新版本的git執行路徑。


※2018 10佳Linux桌面環境
※關於linux內核本地提權漏洞CVE-2017-16995預警
TAG:蟲蟲搜奇 |