OpenSSL源碼升級

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、與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 in Unknown 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的版本看看。


發佈了24 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章