• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
    電話圖標(biāo) 余先生:13699882642

    網(wǎng)站百科

    為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴

    Nginx 配置 HTTPS 服務(wù)器

    發(fā)表日期:2018-05 文章編輯:小燈 瀏覽次數(shù):4686

    瀏覽器地址欄標(biāo)志著 HTTPS 的綠色小鎖頭從心理層面上可以給用戶專業(yè)安全的心理暗示,本文簡(jiǎn)單總結(jié)一下如何在 Nginx 配置 HTTPS 服務(wù)器,讓自己站點(diǎn)上『綠鎖』。

    ?

    Nginx 配置 HTTPS 并不復(fù)雜,主要有兩個(gè)步驟:簽署第三方可信任的 SSL 證書?和?配置 HTTPS

    簽署第三方可信任的 SSL 證書

    SSL 證書主要有兩個(gè)功能:加密身份證明,通常需要購(gòu)買,也有免費(fèi)的,通過(guò)第三方 SSL 證書機(jī)構(gòu)頒發(fā)。由于可信的證書頒發(fā)機(jī)構(gòu)只有那么幾家,所以必須要從他們那里獲取或者購(gòu)買。我的https證書是從騰訊云那里免費(fèi)獲取的(網(wǎng)址:https://console.qcloud.com/ssl)。通過(guò)之后下載下來(lái)就可以了。



    申請(qǐng)的都是一年的有效期,之前在騰訊云購(gòu)買了云服務(wù)器、域名,域名已使用云解析服務(wù),可自動(dòng)添加DNS記錄驗(yàn)證,很快就能驗(yàn)證通過(guò)。

    通過(guò)后會(huì)用申請(qǐng)的域名為包名發(fā)送給你,打開后有


    我們主要用到Nginx包里的文件

    自簽名ssl證書

    也可以使用自己簽名SSL證書配置HTTPS,使用自己簽名SSL證書配置到服務(wù)器后,可以通過(guò)HTTPS正常訪問(wèn)應(yīng)用,但是瀏覽器會(huì)提示該網(wǎng)站的安全證書不受信任,不會(huì)有綠鎖標(biāo)志。

    使用openssl生成證書

    openssl 是目前最流行的 SSL 密碼庫(kù)工具,其提供了一個(gè)通用、健壯、功能完備的工具套件,用以支持SSL/TLS 協(xié)議的實(shí)現(xiàn)。

    官網(wǎng):https://www.openssl.org/source/

    1. SSH登錄到服務(wù)器,使用下述命令創(chuàng)建根證書的私匙:

    sudo openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /root/project/ssl/nginx.key -out /root/project/ssl/nginx.crt

    req: 配置參數(shù)-x509指定使用 X.509證書簽名請(qǐng)求管理(certificate signing request (CSR))."X.509" 是一個(gè)公鑰代表that SSL and TLS adheres to for its key and certificate management.

    -nodes: 告訴OpenSSL生產(chǎn)證書時(shí)忽略密碼環(huán)節(jié).(因?yàn)槲覀冃枰狽ginx自動(dòng)讀取這個(gè)文件,而不是以用戶交互的形式)。

    -days 36500: 證書有效期,100年

    -newkey rsa:2048: 同時(shí)產(chǎn)生一個(gè)新證書和一個(gè)新的SSL key(加密強(qiáng)度為RSA 2048)

    -keyout:SSL輸出文件名

    -out:證書生成文件名

    它會(huì)問(wèn)一些問(wèn)題。需要注意的是在common name中填入網(wǎng)站域名,如wiki.xby1993.net即可生成該站點(diǎn)的證書,同時(shí)也可以使用泛域名如*.xby1993.net來(lái)生成所有二級(jí)域名可用的網(wǎng)站證書。

    整個(gè)問(wèn)題應(yīng)該如下所示:


    Country Name (2 letter code) [AU]:CN

    State or Province Name (full name) [Some-State]:Fu jian

    Locality Name (eg, city) []:Xia men

    Organization Name (eg, company) [Internet Widgits Pty Ltd]:lin

    Organizational Unit Name (eg, section) []:qiezi

    Common Name (e.g. server FQDN or YOUR name) []:www.qeizi666.cn

    Email Address []:363232233@qq.com

    上面的命令會(huì)在`/root/project/ssl`目錄下生成`nginx.crt`和`nginx.key`文件,創(chuàng)建了有效期100年,加密強(qiáng)度為RSA2048的SSL密鑰key和X509證書文件。

    配置 HTTPS

    Nginx安裝ssl模塊

    Nginx 默認(rèn)安裝的情況下ssl模塊并未被安裝,如果要使用該模塊則需要在編譯nginx時(shí)指定–with-http_ssl_module參數(shù).

    1.查看ngixn版本極其編譯參數(shù)

    /usr/local/nginx/sbin/nginx -V

    我已經(jīng)安裝ssl模塊,所以有ssl的一些信息

    2.進(jìn)入你自己的nginx源碼目錄

    cd developer/nginx-1.13.9/


    3.重新編譯的代碼和模塊

    ./configure --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module

    4.make,千萬(wàn)別make install,否則就覆蓋安裝了

    make

    5.備份舊的nginx程序

    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

    6.復(fù)制objs下的nginx程序覆蓋舊的

    cp objs/nginx /usr/local/nginx/sbin/nginx

    7.測(cè)試新的nginx程序是否正確

    /usr/local/nginx/sbin/nginx -t


    8.重啟nginx

    /usr/local/nginx/sbin/nginx -s reload

    9.查看ngixn版本極其編譯參數(shù)

    /usr/local/nginx/sbin/nginx -V

    Nginx上啟用https

    配置Nginx配置文件

    編輯nginx.conf

    vim /usr/local/nginx/conf/nginx.conf

    在http下添加

    includevhost/*.conf;

    這是為了方便擴(kuò)展和維護(hù)

    在conf目錄下創(chuàng)建vhost文件夾,里面專門存放nginx的配置,可以以域名為文件名存在配置


    Nginx上啟用https

    #簡(jiǎn)單配置

    server {

    ? ? ? listen? ? ? ?443 ssl;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? server_name? ? www.****.com;#域名? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ssl_certificate? ? ? /root/project/ssl/nginx.crt;#證書路徑? ? ?

    ? ? ? ssl_certificate_key? /root/project/ssl/nginx.key;#key路徑? ? ? ? ? ? ?

    ? ? ? ssl_session_cache? ? shared:SSL:1m; #s儲(chǔ)存SSL會(huì)話的緩存類型和大小? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ssl_session_timeout? 5m; #會(huì)話過(guò)期時(shí)間

    ? ? ? #...? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? }


    將http訪問(wèn)自動(dòng)跳轉(zhuǎn)到https

    server{

    ? ? ? ?listen 80 www.****.com;? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ?rewrite? ^/(.*)$ https://www.****.com/$1 permanent;?

    }? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    HTTPS服務(wù)器優(yōu)化

    激活?keepalive?長(zhǎng)連接,一個(gè)連接發(fā)送更多個(gè)請(qǐng)求

    復(fù)用 SSL 會(huì)話參數(shù),在并行并發(fā)的連接數(shù)中避免進(jìn)行多次 SSL『握手』

    這些會(huì)話會(huì)存儲(chǔ)在一個(gè) SSL 會(huì)話緩存里面,通過(guò)命令?ssl_session_cache?配置,可以使緩存在機(jī)器間共享,然后利用客戶端在『握手』階段使用的?seesion id?去查詢服務(wù)端的 session cathe(如果服務(wù)端設(shè)置有的話),簡(jiǎn)化『握手』階段。

    1M 的會(huì)話緩存大概包含 4000 個(gè)會(huì)話,默認(rèn)的緩存超時(shí)時(shí)間為 5 分鐘,可以通過(guò)使用?ssl_session_timeout?命令設(shè)置緩存超時(shí)時(shí)間。下面是一個(gè)擁有 10M 共享會(huì)話緩存的多核系統(tǒng)優(yōu)化配置例子:

    server {

    ? ? ? listen? ? ? ? 443 ssl;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? server_name? ? www.****.com;#域名? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ssl_certificate? ? ? /root/project/ssl/nginx.crt;#證書路徑? ? ?

    ? ? ? ssl_certificate_key? /root/project/ssl/nginx.key;#key路徑? ? ? ? ? ? ?

    ? ? ? ssl_session_cache? ? shared:SSL:1m; #s儲(chǔ)存SSL會(huì)話的緩存類型和大小? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ssl_session_timeout? 5m; #會(huì)話過(guò)期時(shí)間? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ssl_ciphers? HIGH:!aNULL:!MD5; #為建立安全連接,服務(wù)器所允許的密碼格式列表? ? ? ? ? ??

    ? ? ? ssl_prefer_server_ciphers? on; #依賴SSLv3和TLSv1協(xié)議的服務(wù)器密碼將優(yōu)先于客戶端密碼

    ? ? ?#配置共享會(huì)話緩存大小

    ? ? ? ssl_session_cacheshared:SSL:10m;

    ? ? ? #配置會(huì)話超時(shí)時(shí)間

    ? ? ? ssl_session_timeout10m;

    ?#...? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? }


    使用 HSTS 策略強(qiáng)制瀏覽器使用 HTTPS 連接

    HSTS – HTTP Strict Transport Security,HTTP嚴(yán)格傳輸安全。它允許一個(gè) HTTPS 網(wǎng)站要求瀏覽器總是通過(guò) HTTPS 來(lái)訪問(wèn),這使得攻擊者在用戶與服務(wù)器通訊過(guò)程中攔截、篡改信息以及冒充身份變得更為困難。

    只要在 Nginx 配置文件加上以下頭信息就可以了:

    add_headerStrict-Transport-Security"max-age=31536000; includeSubDomains;preload"always;

    max-age:設(shè)置單位時(shí)間內(nèi)強(qiáng)制使用 HTTPS 連接

    includeSubDomains:可選,所有子域同時(shí)生效

    preload:可選,非規(guī)范值,用于定義使用『HSTS 預(yù)加載列表』

    always:可選,保證所有響應(yīng)都發(fā)送此響應(yīng)頭,包括各種內(nèi)置錯(cuò)誤響應(yīng)

    加強(qiáng) HTTPS 安全性

    HTTPS 基礎(chǔ)配置采取的默認(rèn)加密算法是 SHA-1,這個(gè)算法非常脆弱,安全性在逐年降低,在 2014 年的時(shí)候,?Google 官方博客就宣布在 Chrome 瀏覽器中逐漸降低 SHA-1 證書的安全指示,會(huì)從 2015 年起使用 SHA-2 簽名的證書,可參閱?Rabbit_Run?在 2014 年發(fā)表的文章:《為什么Google急著殺死加密算法SHA-1》

    為此,主流的 HTTPS 配置方案應(yīng)該避免 SHA-1,可以使用?迪菲-赫爾曼密鑰交換(D-H,Diffie–Hellman key exchange)方案。

    首先在目錄?/root/project/ssl?運(yùn)行以下代碼生成?dhparam.pem?文件:

    一般網(wǎng)站使用的SSL證書都是RSA證書,這種證書基本都是2048位的密鑰,但是證書密鑰交換密鑰必須要比證書密鑰更長(zhǎng)才能安全,而默認(rèn)的只有1024位,所以我們需要手動(dòng)生成一個(gè)更強(qiáng)的密鑰。所以配置之前,如果沒(méi)有DH-key就需要做下面的步驟

    有screen則跳過(guò),沒(méi)則安裝

    yum -y install screen

    生成4096位的DH-Key(證書密鑰交換密鑰)

    screen -S DH

    openssl dhparam -out dhparam.pem 4096


    執(zhí)行之后需要等很長(zhǎng)時(shí)間,總之慢慢等,網(wǎng)路出現(xiàn)中斷,可以執(zhí)行下面命令重新連接安裝窗口

    screen -r DH

    熬過(guò)漫長(zhǎng)的等待時(shí)間后,建議生成的dhparam.pem文件最好跟SSL證書放在一起方便管理。

    然后加入 Nginx 配置:

    #優(yōu)先采取服務(wù)器算法

    ssl_prefer_server_ciphers? on;

    #使用DH文件

    ssl_dhparam? ? ?/root/project/ssl/dhparam.pem;

    ssl_protocols? ? ?TLSv1 TLSv1.1TLSv1.2;

    #定義算法

    ssl_ciphers? "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";

    一般情況下還應(yīng)該加上以下幾個(gè)增強(qiáng)安全性的命令:

    #減少點(diǎn)擊劫持

    add_headerX-Frame-Options DENY;

    #禁止服務(wù)器自動(dòng)解析資源類型

    add_headerX-Content-Type-Options nosniff;

    #防XSS攻擊

    add_headerX-Xss-Protection1;


    優(yōu)化后的綜合配置

    server {

    ? ? ? ? listen? ? ? ? ? ? ? 443 ssl;

    ? ? ? ? ? server_name? ? www.****.com;#域名? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ssl_certificate? ? ? /root/project/ssl/nginx.crt;#證書路徑? ? ?

    ????ssl_certificate_key? /root/project/ssl/nginx.key;#key路徑?

    ????ssl_session_cache? ? shared:SSL:1m; #s儲(chǔ)存SSL會(huì)話的緩存類型和大小? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ssl_session_timeout? 5m; #會(huì)話過(guò)期時(shí)間

    #設(shè)置長(zhǎng)連接

    ? ? ? ? keepalive_timeout?70;

    #HSTS策略

    ? ? ? ? add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    #優(yōu)先采取服務(wù)器算法

    ? ? ? ? ssl_prefer_server_ciphers on;

    ? #使用DH文件

    ? ? ? ? ssl_dhparam ? ?/root/project/ssl/dhparam.pem;

    ? ? ? ? ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ? ? ? ? #定義算法

    ? ? ? ? ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";

    ? ? ? ?#減少點(diǎn)擊劫持

    ? ? ? ? add_header X-Frame-Options DENY;

    ? ? ? ? #禁止服務(wù)器自動(dòng)解析資源類型

    ? ? ? ? add_header X-Content-Type-Options nosniff;

    ? ? ? ? #防XSS攻擊

    ? ? ? ? add_header X-Xss-Protection 1;

    ? ? ? ? #......

    }

    配置完成

    測(cè)試新的nginx程序是否正確

    /usr/local/nginx/sbin/nginx? ?-t

    重啟Nginx!

    /usr/local/nginx/sbin/nginx -s reload

    總結(jié)

    OK,我們簡(jiǎn)單總結(jié)一下在 Nginx 下配置 HTTPS 的關(guān)鍵要點(diǎn):

    獲得 SSL 證書

    通過(guò)第三方可靠證書頒發(fā)機(jī)構(gòu)獲取,或者通過(guò) OpenSSL 命令獲得 example.key 和 example.csr 文件

    HTTPS優(yōu)化

    減少 CPU 運(yùn)算量

    使用 keepalive 長(zhǎng)連接

    復(fù)用 SSL 會(huì)話參數(shù)

    使用 HSTS 策略強(qiáng)制瀏覽器使用 HTTPS 連接

    添加 Strict-Transport-Security 頭部信息

    使用 HSTS 預(yù)加載列表(HSTS Preload List)

    加強(qiáng) HTTPS 安全性

    使用迪菲-赫爾曼密鑰交換(D-H,Diffie–Hellman key exchange)方案

    添加 X-Frame-Options 頭部信息,減少點(diǎn)擊劫持

    添加 X-Content-Type-Options 頭部信息,禁止服務(wù)器自動(dòng)解析資源類型

    添加 X-Xss-Protection 頭部信息,防XSS攻擊

    其實(shí)簡(jiǎn)單的個(gè)人博客,如果沒(méi)有敏感數(shù)據(jù)交互的話,使用 http 協(xié)議通訊,一般都?jí)蛴昧耍?yè)面速度還會(huì)更快,但正如文章開頭所說(shuō),戴上『綠鎖』,更專業(yè)更安全~~有興趣的同學(xué)可以去深入了解折騰下:)



    本頁(yè)內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過(guò)網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學(xué)習(xí)參考,本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁(yè)中由涉嫌抄襲的內(nèi)容,請(qǐng)及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會(huì)在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://www.juherenli.com/20534.html
    相關(guān)開發(fā)語(yǔ)言
     八年  行業(yè)經(jīng)驗(yàn)

    多一份參考,總有益處

    聯(lián)系深圳網(wǎng)站公司塔燈網(wǎng)絡(luò),免費(fèi)獲得網(wǎng)站建設(shè)方案及報(bào)價(jià)

    咨詢相關(guān)問(wèn)題或預(yù)約面談,可以通過(guò)以下方式與我們聯(lián)系

    業(yè)務(wù)熱線:余經(jīng)理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    • QQ咨詢
    • 在線咨詢
    • 官方微信
    • 聯(lián)系電話
      座機(jī)0755-29185426
      手機(jī)13699882642
    • 預(yù)約上門
    • 返回頂部
    国产精品久久久久网站| 精品久久久久久99人妻| 日韩精品一二三区| 久久人人爽人人精品视频| 亚洲精品白浆高清久久久久久| 亚洲综合一区二区国产精品| 99久久久国产精品免费无卡顿| 国产精品极品美女免费观看| 精品国产免费一区二区三区| 国产精品美女久久久久久2018| 3d动漫精品啪啪一区二区免费| 中日韩精品无码一区二区三区| 国产成人精品123区免费视频| 精品无码国产自产拍在线观看蜜| 亚洲国产精品嫩草影院在线观看 | 中文字幕一区二区精品区| 国产99视频精品免费观看7| 国产精品久久久久久福利| 亚洲欧洲精品无码AV| 91精品国产亚洲爽啪在线影院| 卡一卡2卡3卡精品网站| 国产精品哟女在线观看| 99精品一区二区免费视频| 麻豆精品国产免费观看 | 99精品国产高清一区二区麻豆| 国产精品久久久久久久福利院| 亚洲精品国产精品乱码视色 | 亚洲精品无码专区2| 亚洲精品免费观看| 国产精品人人妻人人爽| 精品亚洲视频在线观看| 91大神精品网站在线观看| 国产精品无码av天天爽| 国产精品三级国产电影| 国产精品亚洲AV三区| 国内精品国语自产拍在线观看| 亚洲精品视频在线免费| 国产一区二区精品在线观看| 亚洲AV成人无码久久精品老人| WWW国产精品内射熟女| 国产999精品2卡3卡4卡|