當安全協議不安全了:OpenSSL漏洞
SSL,全稱Secure Socket Layer,為Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程中不會被截取及竊聽。簡單的說,就是加密傳輸的數據,避免被截取監聽等。
SSL應該是大家平時接觸最多的安全協議了,大家可以看訪問一些網址的時候,一般是http://開頭,如果發現https://開頭就是采用了SSL安全協議。比如,大家在登陸微信網頁版的時候就可以看到:
一般來說,比如nginx,可以通過以下方式就可以進行配置:
<code># HTTPS server # server { listen 443; server_name localhost; ssl on; ssl_certificate /opt/nginx/sslkey/server.crt; ssl_certificate_key /opt/nginx/sslkey/server.key; location / { root /home/workspace/; index index.asp index.aspx; } }</code>
大家可以看到,監聽的是443端口,然后通過ssl on;來開啟,同時通過ssl_certificate和sl_certificate_key配置證書和key文件,具體的就不多解釋了,大家可以自己搜索下。
那么證書和key又是怎么一回事呢?接下來就要講到OpenSSL了。
進行過nginx編譯的同學都知道,在編譯nginx的時候,如果想讓nginx支持開啟SSL,那么必須加一個--with-http_ssl_module 的配置項。那么又何讓服務器支持這個配置項呢?又如何生成nginx配置中SSL所需要的證書和key文件呢?都是源于OpenSSL(openssl_百度百科)。
OpenSSL是一個強大的安全套接字層密碼庫,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,但是,你不應該只將其作為一個庫來使用,它還是一個多用途的、跨平臺的密碼工具。
大家平時如果采用公私鑰的方式連接服務器,也是需要用到OpenSSL的。簡單的理解,OpenSSL是一個強大的支持庫,更是一個強大的密碼工具。雖然要支持SSL協議不一定得采用OpenSSL,但是基本大部分的都是采用OpenSSL。
相信前面簡單的介紹能讓大家了解到OpenSSL的重要性,也明白了SSL協議是做什么的,那么大家應該就可以理解,本來采用SSL協議是為了數據傳輸的安全性,是為了更安全,但是OpenSSL的漏洞直接導致了本該是讓為了更安全的設置變成了致命的危險。

全國443端口:1601250,有33303個受本次OpenSSL漏洞影響
看了這些,稱為"心臟出血"完全不為過。今天估計又有許多運維同學可忙的了。具體的漏洞分析我也不多說了,大家可以看wooyun上的文章(關于OpenSSL“心臟出血”漏洞的分析)
說了這么多,可能有些同學覺得都不要去訪問那些是https的網站了,其實也大可不必,官方其實已經放出補丁了,修復方法:
升級到最新版本OpenSSL 1.0.1g無法立即升級的用戶可以以-DOPENSSL_NO_HEARTBEATS開關重新編譯OpenSSL1.0.2-beta版本的漏洞將在beta2版本修復
對于個人用戶的話,大家不用太擔心,雖然說影響有點大,不過問題主要是出在服務商,而且像那些大網站,比如微信、淘寶等都已經修復了,實在不放心,大家可以這幾天暫時不要訪問使用了SSL協議的網站進行登陸等操作,特別是網銀等網站。