一、OpenSSL源碼升級
2014年4月8日,XP宣布正式停止服務的日子,也是OpenSSL爆出大漏洞的日子。
OpenSSL主要是負責在一些敏感的數據提交上面被廣泛使用,不乏大家經常訪問的一些網站:支付寶、微信、淘寶、網銀、社交、門戶等知名網站。
官方上面推薦大家將OpenSSL升級到OpenSSL 1.0.1g。
這不火急火燎的加入的升級大軍,先查看下自己機器上的OpenSSL版本。
openssl version #OpenSSL 1.0.0-fips 29 Mar 2010
很明顯不是官方所說的版本,必須要升級好吧,我們以源碼的形式。先去下載相對應的OpenSSL版本。
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版本信息.
openssl version #OpenSSL 1.0.1g 7 Apr 2014
如果是1.0.1g,說明你安裝正確了。
二、php_openssl組件版本更新
1、與php一同設置的編譯參數情況
如果你和我一樣很久很久以前安裝了php的版本,而且又是在編譯php版本的時候直接使用“–with-openssl”的話,似乎也沒有添加什么路徑的話,那么你現在可能需要重新再編譯你的php版本了,首先我們要獲取到當時編譯php的參數,注意你的php源碼版本要一致哦,當然你可以重新升級你的php版本也無妨(如果你選擇升級php版本可能會導致你安裝的一些組件無法使用,或者在啟動php-fpm時候會有錯誤提示,我還是不太建議大家升級php版本,最好是找當前版本一直的源碼進行重新編譯)。
#查看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服務。
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添加進去的模塊當然是重復的模塊了。
2、未啟用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的版本看看。