1、OpenSSL源碼升級
2014年4月8日,XP宣佈正式中止服務的日子,也是OpenSSL爆出大漏洞的日子。php
OpenSSL主要是負責在一些敏感的數據提交上面被普遍使用,不乏你們常常訪問的一些網站:支付寶、微信、淘寶、網銀、社交、門戶等知名網站。mysql
官方上面推薦你們將OpenSSL升級到OpenSSL 1.0.1g。sql
這不火急火燎的加入的升級大軍,先查看下本身機器上的OpenSSL版本。微信
openssl version #OpenSSL 1.0.0-fips 29 Mar 2010
很明顯不是官方所說的版本,必需要升級好吧,咱們以源碼的形式。先去下載相對應的OpenSSL版本。curl
cd /usr/local/src/ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar -zxvf openssl-1.0.1g.tar.gz cd openssl-1.0.1g./config shared zlib make && make install #修改歷史的OpenSSL文件設置備份 mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/include/openssl /usr/include/openssl.old #設置軟鏈接使其使用新的OpenSSL版本 剛剛安裝的OpenSSL默認安裝在/usr/local/ssl ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl ln -s /usr/local/ssl/include/openssl /usr/include/openssl #更新動態連接庫數據 echo "/usr/local/ssl/lib">>/etc/ld.so.conf ldconfig -v
咱們再來看看OpenSSL版本信息.socket
openssl version #OpenSSL 1.0.1g 7 Apr 2014
若是是1.0.1g,說明你安裝正確了。函數
2、php_openssl組件版本更新
一、與php一同設置的編譯參數狀況
若是你和我同樣好久好久之前安裝了php的版本,並且又是在編譯php版本的時候直接使用「–with-openssl」的話,彷佛也沒有添加什麼路徑的話,那麼你如今可能須要從新再編譯你的php版本了,首先咱們要獲取到當時編譯php的參數,注意你的php源碼版本要一致哦,固然你能夠從新升級你的php版本也無妨(若是你選擇升級php版本可能會致使你安裝的一些組件沒法使用,或者在啓動php-fpm時候會有錯誤提示,我仍是不太建議你們升級php版本,最好是找當前版本一直的源碼進行從新編譯)。php-fpm
#查看php版本/usr/local/php/bin/php -v #獲取php編譯時的參數/usr/local/php/bin/php -i | grep Command#./configure' '--prefix=/usr/local/php' '--with-mysql' '--with-mysqli' '--with-iconv-dir' '--with-zlib' '--with-libxml-dir' '--enable-xml' '--with-curl' '--enable-fpm' '--enable-mbstring' '--with-gd' '--with-openssl' '--with-mhash' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--disable-fileinfo'
注意把這些「’」都去掉,由於咱們採用了源碼升級OpenSSL的方式,因此新的OpenSSL安裝路徑在上面提到了網站
cd /usr/local/src/php-5.5.6./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl=/usr/local/ssl/--with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --disable-fileinfo make && make install
你採用的是和以前源碼安裝同樣的版本庫無非就是從新編譯一次須要點時間,其餘都不須要修改就能夠安裝對openssl的升級了。咱們重啓下php-fpm服務。url
service php-fpm restart
而後咱們去phpinfo()函數輸出裏面去找找openssl的版本是不是OpenSSL 1.0.1g,是的話就證實一切操做都順利了。
到這裏或許你可能會說我爲何不用phpize了,這不是有點累死人的節奏,我是嘗試過了,一開始就對php_openssl進行單獨模塊編譯,編譯好了以後,從新去啓動php-fpm告訴我下面這個提示。
PHP Warning:Module'openssl' already loaded inUnknown on line 0……
也就是說OpenSSL已經被加載了請不要重複加載,但是我將php.ini文件仔細查看也沒有重複添加openssl組件,個人猜測應該是在php編譯的時候配置了,因此你使用phpize添加進去的模塊固然是重複的模塊了。
二、未啓用php_openssl模塊
貌似這種狀況有點差強人意的感受,由於你歷來沒有使用過openssl,何須要升級呢?除非你有新的業務須要。咳咳,扯淡了。
若是你沒有上面第一種狀況的話,那麼這種方式應該是你的最佳方式了。
cd /usr/local/src/php-5.5.6/ext/openssl /usr/local/php/bin/phpize ./configure --with-openssl=/usr/local/ssl/--with-php-config=/usr/local/php/bin/php-config make && make install
最後就在/usr/local/php/lib/php.ini文件中添加一行
extension=openssl.so
重啓php-fpm,去phpinfo()找找openssl的版本看看。