當前位置: 首頁>>網站開發>>正文


nginx網站快速從http轉https步驟

Http的裸奔特質已經被越來越多的人所了解,當前從Http轉向Https已經是大勢所趨。google和百度相繼宣布支持Https, 並且承諾在搜索結果中,Https網站會獲得更好的排名。本文將以nginx服務器為例,介紹快速從http轉https網站的完整步驟。

第一步:獲得Https證書

  1. 進入專業Https服務站certbot.eff.org,如下圖所示,選擇服務器類型和操作係統版本。看是否有滿足您操作係統環境和服務要求的版本。本文以centos/nginx為例做說明。特別難能可貴的是:這個網站提供的https證書是免費的!連注冊啥的都不需要,零門檻!HTTPS選擇係統配置

    假設我們選擇的是centos7+nginx(當然其他服務器類型apache/http也可以!)

  2. 安裝certbot程序,這個程序用來給網站下載安裝Https證書。
    sudo yum install certbot
  3. 執行certbot certonly獲取證書。一次可以為多個域名獲取證書。其中/var/www/example/var/www/thing/分別是網站根目錄, example.com/www.examplec.com/thing.is/m.thing.is是域名。
    • 已經開啟Http服務的情況下, 執行下麵的命令,需要保證網站根目錄下的有.well-known/目錄且可以訪問。
      certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -w  /var/www/thing -d thing.is -d m.thing.is

      注1:安裝的過程根據提示輸入自己的郵箱。
      注2:如果提示.well-known不能訪問,在nginx配置中加入:location ~ /.well-known { allow all;}

    • 沒有開啟Http服務的情況下,執行下麵的命令(推薦)。
      certbot certonly --standalone -d example.com -d www.example.com
    • 執行上麵的命令之後,Http證書就成功安裝了,一般位於:/etc/letsencrypt/目錄,詳見安裝提示。
  4. Https證書一般90天過期,所以需要設置自動更新證書。
    • 更新證書的命令
      certbot renew --dry-run 
    • 一般在crontab中設置定期執行renew程序,實現Https證書自動更新。下麵的命令是每天6:30/18:30點更新。
      30 6,18 * * * certbot renew --quiet
  5. 到這裏,Https證書就安裝成功了。注意:上麵的步驟除了centos+nginx,也支持其他係統

第二步:配置nginx服務器支持Https

  1. 在服務器nginx配置中加入下麵的代碼即可。注意:1)Https監聽的端口是443;2)初一將域名改成你自己的。
    server {
    listen       443 ssl;
    server_name  vimsky.com alias www.vimsky.com;
    root /usr/share/nginx/html/vimsky;
    
    access_log /etc/nginx/logs/www.vimsky.com-access.log;
    error_log /etc/nginx/logs/www.vimsky.com-error.log;
    
    # Nginx Https關鍵配置,開始位置
    #ssl (其實實際是tls)
    ssl                     on;
    ssl_prefer_server_ciphers on;
    # 支持的加密協議
    ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
    # 支持的加密套件
    ssl_ciphers             HIGH:!RC4:!3DES:!aDSS:!aNULL:!kPSK:!kSRP:!MD5:@STRENGTH:+SHA1:+kRSA;
    # 定義session緩存大小
    ssl_session_cache       shared:TLSSL:16m;
    # 定義session過期時間
    ssl_session_timeout     20m;
    # https證書公鑰
    ssl_certificate         /etc/letsencrypt/live/vimsky.com/fullchain.pem;
    # https證書私鑰 要注意保存!
    ssl_certificate_key     /etc/letsencrypt/live/vimsky.com/privkey.pem;
    # nginx默認會使用Diffiel-Hellman交換密鑰是1024位的,相對不安全,所以需要替換使用更安全的。
    #使用 openssl dhparam -out dh4096.pem 4096 可以生成,然後我將其與網站證書的密鑰放到了一起, 暫時不啟用這個
    #ssl_dhparam             /etc/letsencrypt/live/vimsky.com/dh4096.pem;
    
    # 禁止被外站frame嵌入引用
    add_header X-Frame-Options SAMEORIGIN;
    # 為響應頭添加要求瀏覽器使用https重定向的 header
    add_header Strict-Transport-Security max-age=16000000;
    # Nginx Https關鍵配置,結束位置
    
    location / { 
    # 後麵的配置無關Https省略了.....
  2. 注意上麵秘鑰的生成,是使用命令:
    openssl dhparam -out dh4096.pem 4096
  3. 配置好之後,重啟nginx服務器:
    service nginx restart

第三步:這是可選步驟,將Http重定向到Https,網站同時支持Http和Https是沒有問題的,全部轉到Https更好。

配置如下:

server{
    listen 80;
    server_name vimsky.com alias www.vimsky.com;
    return 301 https://vimsky.com$request_uri;
}

到這裏,網站從Http轉到Https就全部完成了。

延伸閱讀: 你的https網站真的安全嗎?

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/2455.html,未經允許,請勿轉載。