OpenSSL心血漏洞吵的風生水起的。。
nginx
起初,公司幾臺rds的小業務機被通知修補OpenSSL漏洞,這幾臺機器都是單獨小業務,當時停掉,找了個簡單的文檔便將它升級OK(有的是nginx,有的是resin)。修補完成重啓服務後OK。瀏覽器
公司的主業務還有一臺總的入口機(LVS撐的2臺),因爲這臺機器比較重要,13年有過一次修補OpenSSL的漏洞也出過問題,(老機器呀,有換環境的打算),因此此次比較擔憂。可是上週忽然有客服反映客戶瀏覽本地服務時瀏覽器警報業務有問題,導致不得不立馬來解決這個問題(升級OpenSSL)。bash
環境查看及檢測ide
PS:Apache編譯好的$homedir/build/config.nice文件裏面記錄了以前編譯的參數。測試
"./configure" \ "--with-ldap" \ "--enable-mods-shared=all ssl ldap cache proxy authn_alias file_cache authnz_ldap charset_lite dav_lock cache_disk" \ "--with-included-apr" \ "--with-ssl=/usr/local/openssl/" (第一次這裏出了問題)\ "$@"
而後從新編譯完以後使用網站檢測,仍是繼續報存在OpenSSL漏洞。。(開始用的360。而後以爲被他坑了,而後又找了個網站。)
網站
https://lastpass.com/heartbleed (因爲這是過後補的文章,因此我拿了個朋友的網站來演示,他的一樣是這樣的問題。)ui
而後瞬間明白了點什麼。spa
這裏出現了2個問題日誌
-with-ssl=/usr/local/openssl/是老的OpenSSL的路徑。blog
當指定了新的路徑的時候,Apache報錯。(因爲這是過後文章報錯信息沒記錄。大概是這樣的:缺乏apr-util依賴的相關的ldap.so****大概意思是你編譯apr-util的時候就沒有把他依賴的ldap編譯進去)
得了。不繞了,直接開始正確的流程走吧。
1、安裝OpenSSL
升級步驟
0. 首先經過 #openssl version –a 查看系統中存在的OpenSSL版本號
1. 經過#wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz 得到源碼包
2. 安裝openssl
tar xf openssl-1.0.1g.tar.gz cd openssl-1.0.1g ./config -DOPENSSL_NO_HEARTBEATS shared zlib make make install mv /usr/bin/openssl /usr/bin/openssl.OFF mv /usr/include/openssl /usr/include/openssl.OFF ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl ln -s /usr/local/ssl/include/openssl /usr/include/openssl
3 配置庫文件搜索路徑
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf #ldconfig -v
4 查看openssl 版本號,驗證安裝正確性
#openssl version -a
能夠看到是新裝好的版本。
-DOPENSSL_NO_HEARTBEATS (禁止心跳信息)
2、編譯安裝apr apr-util
特別須要注意,我下邊會直接yum安裝ldap相關的組件,緣由在於最後編譯Apache會依賴apr-util裏面的ldap庫,因此編譯apr-util的時候也須要指定。
yum install apr apr-devel apr-util apr-util-devel apr-util-ldap ( 這樣作是爲了解決apr-util依賴ladp的問題,由於我找不到缺乏了具體哪一個庫)
tar xf apr-1.4.6.tar.bz2 cd apr-1.4.6 ./configure --prefix=/usr/local/apr make && make install cd .. tar xf apr-util-1.5.2.tar.bz2 cd apr-util-1.5.2 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-ldap make && make install
3、編譯安裝Apache
$ tar xf httpd-2.4.4.tar.bz2 $ cd httpd-2.4.4 $ ./configure --with-ldap --enable-mods-shared="all ssl ldap cache proxy authn_alias file_cache authnz_ldap charset_lite dav_lock cache_disk" --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl=/usr/local/ssl/ (須要注意ssl這個地方的路徑) $ make && make install
最後補充
操做前我沒有壓縮去備份Apache原先的文件(日誌也打在裏面)。
我將它mv過去,而後最後 在編譯好的目錄下刪掉conf htdocs logs 三個目錄,而後將備份的目錄中的這三個目錄mv過來。最便捷(固然你能夠複製logs的目錄結構過來也行)
大概須要注意的就是ldap依賴的。
其中我在編譯作nginx OpenSSL升級的時候,有一個也是從新編譯,好像是環境因素(時間隔過久了),在編譯的時候,直接指定了OpenSSL的源碼文件,讓nginx將須要的OpenSSL的一些依賴的庫從新編譯了一次。
建議升級線上環境的時候,在測試環境測試完,而後作成rpm包,而後直接線上install。若是本地有本身的yum環境,那更是極好的。