1. 程式人生 > >阿里雲新centos7.4系統安裝https,通過openssl重新編譯nginx

阿里雲新centos7.4系統安裝https,通過openssl重新編譯nginx

按照阿里雲官方的https安裝教程在編譯nginx時總是報錯,研究了很久,發現它的安裝方法可能並不適用於已經預裝好openssl的系統,而教程中提供的openssl版本比較新,網上大部分方法並不適用,經過半天的折騰總結出如下方案:

1.   遠端連線並登入到 Linux 例項。

2.   執行cd/usr/local切換目錄。

3.   執行以下命令安裝PCRE zlib 庫。

1.   yum -y install pcre pcre-devel
2.   yum install -y zlib-devel

執行wgethttp://nginx.org/download/nginx-1.7.0.tar.gz下載 Nginx

執行tar-zxvf nginx-1.7.0.tar.gz解壓安裝包。

執行wgethttps://www.openssl.org/source/openssl-1.0.1g.tar.gz下載OpenSSL

執行tar-xvzf openssl-1.0.1g.tar.gz解壓安裝包。

新建資料夾mkdir /usr/local/ssl

移動openssl資料夾

 mv /usr/local/openssl-1.0.1g /usr/local/ssl/openssl-1.0.1g

進入解壓後的openssl資料夾 cd./ssl/openssl-1.0.1g/

執行資料夾中的config檔案,這裡openssl的安裝目錄預設是/usr/local/ssl(由於系統環境差異路徑可能不一致,下同),注意新增

zlib-dynamic引數,使其編譯成動態庫

./config shared zlib-dynamic

config完成後執行 make 命令make

     make 命令執行完後再執行make install 命令,安裝openssl  make install

重新命名原來的openssl命令mv /usr/bin/openssl /usr/bin/openssl.old

重新命名原來的openssl目錄mv /usr/include/openssl /usr/include/openssl.old 若沒有此目錄(阿里雲centos7.4沒有),省去此步驟。

將安裝好的openssl的openssl命令軟連到/usr/bin/openssl

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

將安裝好的openssl的openssl目錄軟連到/usr/include/openssl

ln -s /usr/local/ssl/include/openssl  /usr/include/openssl

修改系統自帶的openssl庫檔案,如/usr/local/lib64/libssl.so(根據機器環境而定) 軟鏈到升級後的libssl.so

ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so

執行命令檢視openssl依賴庫版本是否為1.0.1g    strings/usr/local/lib64/libssl.so |grep OpenSSL

在/etc/ld.so.conf檔案中寫入openssl庫檔案的搜尋路徑

echo"/usr/local/ssl/lib">> /etc/ld.so.conf

使修改後的/etc/ld.so.conf生效   ldconfig -v   此時檢視openssl是否更新

openssl version

原始碼重新安裝nginx,使用ssl靜態編譯:執行nginx的configure檔案時,除了業務需要的引數外,需要指定ssl為靜態編譯,編譯引數帶上--with-openssl便表明為靜態編譯ssl

cd /usr/local/nginx-1.7.0

./configure  --with-http_ssl_module--with-openssl=/usr/local/ssl/ openssl-1.0.1g

安裝nginx    make && make install

新建資料夾 /usr/local/nginx/conf/cert 證書匯入

修改 /usr/local/nginx/conf/nginx.conf 加入

server {

                   listen443;

                   server_name www.liuxuan.cc;

                   sslon;

                   ssl_certificate   cert/5.pem;

                   ssl_certificate_key  cert/5.key;

                   ssl_session_timeout5m;

                   ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

                   ssl_protocolsTLSv1 TLSv1.1 TLSv1.2;

                   ssl_prefer_server_cipherson;

                   location/ {

                                     proxy_intercept_errorson;

                                     proxy_redirectoff;

                                     proxy_set_headerHost $host;

                                     proxy_set_headerX-Real-IP $remote_addr;

                                     proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;

                                     proxy_passhttp://127.0.0.1:8082;

                            }

                   error_page    500 502 503 504  /defined50x.html;

                   location= /defined50x.html {

                            root   /usr/local/nginx/html;

                   }

                            access_log/usr/local/nginx/logs/mswx_access.log;

           }