Nginx配置SSL證書——采用騰訊雲SSL證書配置Nginx使用https訪問


一、引言

為什么我們要配置這個SSL證書呀?

SSL證書,就是遵守SSL安全套接層協議的服務器數字證書,由瀏覽器受信任的根證書頒發機構在驗證服務器身份后頒發,具有網站身份驗證和加密傳輸等功能。SSL證書並不是什么高深的技術產品,只需要成功申請下發后,安裝到網站服務器即可。當你訪問一個網站時,如果發現瀏覽器的地址欄中顯示的是“https://”,就說明這個網站已經安裝部署了SSL證書。
網站安裝SSL證書到底有哪些好處呢?簡單整理幾條給大家:
好處一:隱私信息加密。對網站傳輸的數據進行SSL加密,防止被黑客監聽、竊取和篡改,有效保證用戶的隱私信息。
好處二:提高網站排名。谷歌、百度等主流搜索引擎表示優先收錄以HTTPS開頭的網站,並賦予網站高權重,有效提高網站關鍵詞在搜索引擎中的排名。
好處三:受瀏覽器信任。安裝由權威證書頒發機構簽發的證書,會成為谷歌、火狐等主流瀏覽器受信任的站點。
好處四:提升企業形象。安裝高級SSL證書可以顯示單位名稱,大大提升企業的形象和可信度。
好處五:防止流量劫持。網站流量劫持現象頻繁發生,安裝SSL證書,能有效避免流量劫持。

 

二、准備工作

1、首先得有自己的一台雲服務器,需要在后台把443端口開放。

2、購買一個域名(騰訊雲、阿里雲都行),.com的域名需要備案,其他的不需要備案但是也能訪問,可能不穩定。

3、在騰訊雲、阿里雲申請一個SSL證書,有免費版的,然后下載下來如圖。

 

 

 

配置SSL關聯到對應域名

一般申請注冊階段就配置好了



 

 

 下載證書

 

                      下載證書.png

 

 

三、Nginx配置SSL

3.1將下載的ssl  nginx證書上傳至雲服務器

阿里雲申請的ssl:nginx文件如下所示:

1,214292799730473.pem

2,214292799730473.key

 

騰訊雲申請的ssl, nginx文件如下所示:

 

 

3.2開始安裝配置nginx

一、安裝編譯工具及庫文件

 
        
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel


二、安裝 PCRE(讓 Nginx 支持 Rewrite 功能)

 
#下載最新版本的,注意不要用pcre2
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -xvf pcre-8.42.tar.gz
cd pcre-8.42 
#安裝編譯
./configure
make && make install
#查看pcre版本
pcre-config --version

 

 
 
        

三、安裝nginx(源碼安裝)

 
        
#下載
wget https://nginx.org/download/nginx-1.15.9.tar.gz
tar -xvf nginx-1.15.9.tar.gz
cd nginx-1.15.9
#編譯安裝
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42 
make && make install
#查看版本
/usr/local/webserver/nginx/sbin/nginx -v
 

四、nginx配置

 

 
        

 

 
        
#啟動
/usr/local/webserver/nginx/sbin/nginx
/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新載入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重啟 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

 

   

配置nginx配置文件(/usr/local/webserver/nginx/conf/nginx.conf)

user root;
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    
   server {
        listen        443 ssl;
        server_name   www.relishfruit.com;
        ssl_certificate  /usr/local/nginx/conf/Nginx/1_www.relishfruit.com_bundle.crt;
        ssl_certificate_key  /usr/local/nginx/conf/Nginx/2_www.relishfruit.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

      }

   server {
        listen       80;
        server_name  www.relishfruit.com;
        rewrite     ^   https://$server_name$request_uri? permanent;                            

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }   
    }
}

 

 

修改項為:

 
        
  • server_name 設置綁定的域名
  • ssl_certificate 證書
  • ssl_certificate_key 證書的私鑰
  • ssl_protocols 使用的協議
  • ssl_ciphers 配置加密套件,寫法遵循 openssl 標准

 

 
        

 

http 自動跳轉 https (可選)

這時候的網站既可以使用http://請求,也可以使用https://請求。
如果想將所有的http請求自動跳轉為https請求,在/usr/local/nginx/conf/nginx.conf添加

rewrite ^(.*) https://$host$1 permanent;

現在重啟Nginx,Chrome應該能正常顯示Https.如果只想使用Https連接,可以再添加一個server,然后跳轉到https

server {
        listen 80; server_name liuzhichao.com www.liuzhichao.com ; rewrite ^ https://$server_name$request_uri? permanent; }

 

重啟nginx,測試如下:

 

 

 

 

注意事項:

1、nginx:[emerg]unknown directive ssl,就是這個錯誤提示

因為我們配置這個SSL證書需要引用到nginx的中SSL這模塊,然而我們一開始編譯的Nginx的時候並沒有把SSL模塊一起編譯進去,所以導致這個錯誤的出現。

 
步驟一:我們先來到當初下載nginx的包壓縮的解壓目錄,如果你是看小編寫的教程安裝的,解壓目錄應該在“/usr/loacl/src/”,絕大多數應該都是在這個目錄下的,已經是一種規范了。

重啟報錯:缺少http_ssl_module模塊

這是由於在最開始編譯nginx時,沒有加入http_ssl_module模塊的原因導致的。
解決方案:重新編譯一次nginx,並把http_ssl_module模塊加上去。

 
         
    • 如果出現這個問題,一般情況下也可能沒有安裝openssl和openssl-devel模塊。請安裝這兩個模塊:
      yum install openssl
      yum install openssl-devel


步驟二:來到解壓目錄下后,按順序執行一下命令:

               命令1、./configure --with-http_ssl_module  //重新添加這個ssl模塊

                  注意如果沒有出現錯誤,則直接看命令2即可 

               執行以上一條命令出現這個錯誤(./configure:錯誤:SSL模塊需要OpenSSL庫。),原因是因為缺少了OpenSSL,那我們再來安裝一個即可執行:yum -y install openssl openssl-devel

                等待OpenSSL的安裝完成后,再執行./configure ,最后在執行” 命令1" 即可。

               命令2、執行make命令,但是不要執行make install,因為make是用來編譯的,而make install是安裝,不然你整個nginx會重新覆蓋的。

               命令3、在我們執行完做命令后,我們可以查看到在nginx解壓目錄下,objs文件夾中多了一個nginx的文件,這個就是新版本的程序了。首先我們把之前的nginx先備份一下,
然后把新的程序復制過去覆蓋之前的即可。 cp
/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp objs/nginx /usr/local/nginx/sbin/nginx 命令4,最后我們來到Nginx安裝目錄下,來查看是否有安裝ssl模塊成功。執行./sbin/nginx -V即可看

重新啟動nginx則OK了。

 

 

 

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM