最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx搭建HTTPS服務(wù)器和強(qiáng)制使用HTTPS訪問(wèn)的方法

 更新時(shí)間:2015年08月16日 17:54:49   作者:低調(diào)小一  
這篇文章主要介紹了Nginx搭建HTTPS服務(wù)器和強(qiáng)制使用HTTPS訪問(wèn)的方法,即從HTTP跳轉(zhuǎn)到HTTPS,需要的朋友可以參考下

HTTPS簡(jiǎn)介
HTTPS(Hyper Text Transfer Protocol Secure),是一種基于SSL/TLS的HTTP,所有的HTTP數(shù)據(jù)都是在SSL/TLS協(xié)議封裝之上進(jìn)行傳輸?shù)摹TTPS協(xié)議是在HTTP協(xié)議的基礎(chǔ)上,添加了SSL/TLS握手以及數(shù)據(jù)加密傳輸,也屬于應(yīng)用層協(xié)議。Https使用的默認(rèn)端口是443。更多HTTPS原理可以參考阮一峰老師的文章:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

SSL證書(shū)
證書(shū)類型簡(jiǎn)介
要設(shè)置安全服務(wù)器,使用公共鑰創(chuàng)建一對(duì)公私鑰對(duì)。大多數(shù)情況下,發(fā)送證書(shū)請(qǐng)求(包括自己的公鑰),你的公司證明材料以及費(fèi)用到一個(gè)證書(shū)頒發(fā)機(jī)構(gòu)(CA)。CA驗(yàn)證證書(shū)請(qǐng)求及您的身份,然后將證書(shū)返回給您的安全服務(wù)器。
但是內(nèi)網(wǎng)實(shí)現(xiàn)一個(gè)服務(wù)器端和客戶端傳輸內(nèi)容的加密,可以自己給自己頒發(fā)證書(shū),只需要忽略掉瀏覽器不信任的警報(bào)即可!
由CA簽署的證書(shū)為您的服務(wù)器提供兩個(gè)重要的功能:

  1.     瀏覽器會(huì)自動(dòng)識(shí)別證書(shū)并且在不提示用戶的情況下允許創(chuàng)建一個(gè)安全連接。
  2.     當(dāng)一個(gè)CA生成一個(gè)簽署過(guò)的證書(shū),它為提供網(wǎng)頁(yè)給瀏覽器的組織提供身份擔(dān)保。

    多數(shù)支持ssl的web服務(wù)器都有一個(gè)CA列表,它們的證書(shū)會(huì)被自動(dòng)接受。當(dāng)一個(gè)瀏覽器遇到一個(gè)其授權(quán)CA并不在列表中的證書(shū),瀏覽器將詢問(wèn)用戶是否接受或拒絕連接。

制作CA證書(shū)
ca.key CA私鑰:

    openssl genrsa -des3 -out ca.key 2048  

2015816174647523.jpg (768×167)

    ca.crt CA根證書(shū)(公鑰):

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

2015816174708350.jpg (901×376)

制作網(wǎng)站的證書(shū)并用CA簽名認(rèn)證
這里,假設(shè)網(wǎng)站域名為www.example.com,生成com.example.com證書(shū)私鑰:

 

  openssl genrsa -des3 -out www.example.com.pem 1024 

2015816174727737.jpg (826×165)

    制作解密后的www.example.com證書(shū)私鑰:

  openssl rsa -in www.example.com.pem -out www.example.com.key 


2015816174745612.jpg (937×71)

    生成簽名請(qǐng)求:

  openssl req -new -key www.example.com.pem -out www.example.com.csr 

   

2015816174821668.jpg (1005×491)

    可以在Common Name中填入網(wǎng)站域名,即可生產(chǎn)該網(wǎng)站的證書(shū)。
用CA進(jìn)行簽名:

   
復(fù)制代碼 代碼如下:
openssl ca -policy policy_anything -days 365 -cert ca.crt -keyfile ca.key -in www.example.com.csr -out www.example.com.crt 
可能執(zhí)行簽名時(shí),會(huì)出現(xiàn)“I am unable to access the ./demoCA/newcerts directory”問(wèn)題:

2015816174842731.jpg (566×98)

解決方法:

  mkdir -p demoCA/newcerts 
  touch demoCA/index.txt 
  touch demoCA/serial 
  echo "01" > demoCA/serial 

然后,再執(zhí)行簽名命令即可。

基于Nginx搭建HTTPS虛擬主機(jī)
虛擬主機(jī)配置文件

  upstream sslfpm { 
    server 127.0.0.1:9000  weight=10  max_fails=3 fail_timeout=20s; 
  } 
   
  server {  
    listen    192.168.1.*:443;  
    server_name 192.168.1.*;  
     
    #為一個(gè)server開(kāi)啟ssl支持 
    ssl         on; 
    #為虛擬主機(jī)指定pem格式的證書(shū)文件 
    ssl_certificate   /home/wangzhengyi/ssl/wangzhengyi.crt;  
    #為虛擬主機(jī)指定私鑰文件 
    ssl_certificate_key /home/wangzhengyi/ssl/wangzhengyi_nopass.key;  
    #客戶端能夠重復(fù)使用存儲(chǔ)在緩存中的會(huì)話參數(shù)時(shí)間 
    ssl_session_timeout 5m; 
    #指定使用的ssl協(xié)議  
    ssl_protocols SSLv3 TLSv1;  
    #指定許可的密碼描述 
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  
    #SSLv3和TLSv1協(xié)議的服務(wù)器密碼需求優(yōu)先級(jí)高于客戶端密碼 
    ssl_prefer_server_ciphers  on;  
   
    location / {  
      root  /home/wangzhengyi/ssl/; 
      autoindex on; 
        autoindex_exact_size  off; 
        autoindex_localtime on; 
    }  
      # redirect server error pages to the static page /50x.html 
      # 
      error_page  500 502 503 504 /50x.html; 
      error_page  404 /404.html; 
   
    location = /50x.html { 
        root  /usr/share/nginx/www; 
      } 
    location = /404.html { 
        root  /usr/share/nginx/www; 
      } 
     
      # proxy the PHP scripts to fpm 
      location ~ \.php$ { 
      access_log /var/log/nginx/ssl/ssl.access.log main; 
      error_log /var/log/nginx/ssl/ssl.error.log; 
      root /home/wangzhengyi/ssl/;  
      fastcgi_param  HTTPS  on; 
        include /etc/nginx/fastcgi_params;  
        fastcgi_pass  sslfpm; 
      } 
  } 

HTTPS服務(wù)器優(yōu)化
方法
SSL操作需要消耗CPU資源,所以在多處理器的系統(tǒng),需要啟動(dòng)多個(gè)工作進(jìn)程,而且數(shù)量需要不少于可用CPU的個(gè)數(shù)。最消耗CPU資源的SSL操作是SSL握手,有兩種方法可以將每個(gè)客戶端的握手操作數(shù)量降到最低:

    保持客戶端長(zhǎng)連接,在一個(gè)SSL連接發(fā)送多個(gè)請(qǐng)求
    在并發(fā)的連接或者后續(xù)的連接中重用SSL會(huì)話參數(shù),這樣可以避免SSL握手操作。

會(huì)話緩存用于保存SSL會(huì)話,這些緩存在工作進(jìn)程間共享,可以使用ssl_session_cache指令進(jìn)行配置。1M緩存可以存放約4000個(gè)會(huì)話。默認(rèn)的緩存超時(shí)時(shí)間是5m,可以使用ssl_session_timeout加大它。
ssl_session_cache指令

    語(yǔ)法:ssl_session_cache off|none|builtin:size|shared:name:size 
    使用環(huán)境:main,server 
    緩存類型: 
    off -- 硬關(guān)閉,nginx明確告訴客戶端這個(gè)會(huì)話不可重用 
    none -- 軟關(guān)閉,nginx告訴客戶端會(huì)話能夠被重用,但是nginx實(shí)際上不會(huì)重用它們 
    bultin -- openssl內(nèi)置緩存,僅可用于一個(gè)工作進(jìn)程.可能導(dǎo)致內(nèi)存碎片 
    shared -- 所有工作進(jìn)程的共享緩存。(1)緩存大小用字節(jié)數(shù)指定(2)每個(gè)緩存必須擁有自己的名稱(3)同名的緩存可用于多個(gè)虛擬主機(jī) 

優(yōu)化示例

  #優(yōu)化ssl服務(wù) 
  ssl_session_cache  shared:wzy:10m;  
  #客戶端能夠重復(fù)使用存儲(chǔ)在緩存中的會(huì)話參數(shù)時(shí)間 
  ssl_session_timeout 10m; 

nginx強(qiáng)制使用https訪問(wèn)(http跳轉(zhuǎn)到https)


基于nginx搭建了一個(gè)https訪問(wèn)的虛擬主機(jī),監(jiān)聽(tīng)的域名是test.com,但是很多用戶不清楚https和http的區(qū)別,會(huì)很容易敲成http://test.com,這時(shí)會(huì)報(bào)出404錯(cuò)誤,所以我需要做基于test.com域名的http向https的強(qiáng)制跳轉(zhuǎn)

nginx的rewrite方法


思路
這應(yīng)該是大家最容易想到的方法,將所有的http請(qǐng)求通過(guò)rewrite重寫(xiě)到https上即可

配置

  server { 
    listen 192.168.1.111:80; 
    server_name test.com; 
     
    rewrite ^(.*)$ https://$host$1 permanent; 
  } 


搭建此虛擬主機(jī)完成后,就可以將http://test.com的請(qǐng)求全部重寫(xiě)到https://test.com上了


nginx的497狀態(tài)碼

error code 497

  497 - normal request was sent to HTTPS 


解釋:當(dāng)此虛擬站點(diǎn)只允許https訪問(wèn)時(shí),當(dāng)用http訪問(wèn)時(shí)nginx會(huì)報(bào)出497錯(cuò)誤碼

思路
利用error_page命令將497狀態(tài)碼的鏈接重定向到https://test.com這個(gè)域名上

配置

  server { 
    listen    192.168.1.11:443; #ssl端口 
    listen    192.168.1.11:80;  #用戶習(xí)慣用http訪問(wèn),加上80,后面通過(guò)497狀態(tài)碼讓它自動(dòng)跳到443端口 
    server_name test.com; 
    #為一個(gè)server{......}開(kāi)啟ssl支持 
    ssl         on; 
    #指定PEM格式的證書(shū)文件  
    ssl_certificate   /etc/nginx/test.pem;  
    #指定PEM格式的私鑰文件 
    ssl_certificate_key /etc/nginx/test.key; 
     
    #讓http請(qǐng)求重定向到https請(qǐng)求  
    error_page 497 https://$host$uri?$args; 
  } 

index.html刷新網(wǎng)頁(yè)


思路
上述兩種方法均會(huì)耗費(fèi)服務(wù)器的資源,我們用curl訪問(wèn)baidu.com試一下,看百度的公司是如何實(shí)現(xiàn)baidu.com向www.baidu.com的跳轉(zhuǎn)

2015816174906881.png (1024×410)

可以看到百度很巧妙的利用meta的刷新作用,將baidu.com跳轉(zhuǎn)到www.baidu.com.因此我們可以基于http://test.com的虛擬主機(jī)路徑下也寫(xiě)一個(gè)index.html,內(nèi)容就是http向https的跳轉(zhuǎn)

index.html

  <html> 
  <meta http-equiv="refresh" content="0;url=https://test.com/"> 
  </html> 

相關(guān)文章

  • Python操作HDF5文件示例

    Python操作HDF5文件示例

    這篇文章主要為大家介紹了Python操作HDF5文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試

    python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python實(shí)現(xiàn)基于PIL和tesseract的驗(yàn)證碼識(shí)別功能示例

    Python實(shí)現(xiàn)基于PIL和tesseract的驗(yàn)證碼識(shí)別功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)基于PIL和tesseract的驗(yàn)證碼識(shí)別功能,結(jié)合實(shí)例形式分析了Python使用PIL與tesseract進(jìn)行驗(yàn)證碼識(shí)別操作的具體技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Python使用APScheduler實(shí)現(xiàn)定時(shí)任務(wù)過(guò)程解析

    Python使用APScheduler實(shí)現(xiàn)定時(shí)任務(wù)過(guò)程解析

    這篇文章主要介紹了Python使用APScheduler實(shí)現(xiàn)定時(shí)任務(wù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python實(shí)現(xiàn)批量修改圖片大小

    Python實(shí)現(xiàn)批量修改圖片大小

    在日常生活中經(jīng)常有需要調(diào)整圖片大小的需求,一張兩張的還好,但是如果需要幾十張幾百?gòu)埳踔翈浊?,就可以考慮使用Python腳本來(lái)執(zhí)行了,下面小編就來(lái)和大家分享幾個(gè)Python可以批量修改圖片大小的腳本吧
    2023-07-07
  • spyder 在控制臺(tái)(console)執(zhí)行python文件,debug python程序方式

    spyder 在控制臺(tái)(console)執(zhí)行python文件,debug python程序方式

    這篇文章主要介紹了spyder 在控制臺(tái)(console)執(zhí)行python文件,debug python程序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python 可視化調(diào)色盤(pán)繪制

    Python 可視化調(diào)色盤(pán)繪制

    這篇文章主要介紹了Python 可視化調(diào)色盤(pán)繪制,文章首先通過(guò)導(dǎo)入模塊并加載圖片展開(kāi)全文介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-06-06
  • python 使用cycle構(gòu)造無(wú)限循環(huán)迭代器

    python 使用cycle構(gòu)造無(wú)限循環(huán)迭代器

    這篇文章主要介紹了python 使用cycle構(gòu)造無(wú)限循環(huán)迭代器的方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • 在Python中操作時(shí)間之tzset()方法的使用教程

    在Python中操作時(shí)間之tzset()方法的使用教程

    這篇文章主要介紹了在Python中操作時(shí)間之tzset()方法的使用教程,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • python中os庫(kù)的具體使用

    python中os庫(kù)的具體使用

    本文介紹了Python中os庫(kù)的一些常見(jiàn)功能,包括獲取和改變工作目錄、列出目錄內(nèi)容、創(chuàng)建和刪除目錄等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11

最新評(píng)論

保山市| 广东省| 娱乐| 韶关市| 盐山县| 休宁县| 会理县| 湟源县| 娄烦县| 洱源县| 嘉定区| 瓮安县| 滁州市| 云霄县| 牙克石市| 化德县| 红原县| 眉山市| 兴义市| 兴义市| 牙克石市| 长治市| 富宁县| 丰县| 台北市| 尉犁县| 泰和县| 搜索| 清河县| 五台县| 修水县| 建昌县| 革吉县| 怀仁县| 宾阳县| 抚远县| 利辛县| 临江市| 兴隆县| 通城县| 鹤庆县|