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

Nginx搭建HTTPS服務器和強制使用HTTPS訪問的方法

 更新時間:2015年08月16日 17:54:49   作者:低調小一  
這篇文章主要介紹了Nginx搭建HTTPS服務器和強制使用HTTPS訪問的方法,即從HTTP跳轉到HTTPS,需要的朋友可以參考下

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

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

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

    多數支持ssl的web服務器都有一個CA列表,它們的證書會被自動接受。當一個瀏覽器遇到一個其授權CA并不在列表中的證書,瀏覽器將詢問用戶是否接受或拒絕連接。

制作CA證書
ca.key CA私鑰:

    openssl genrsa -des3 -out ca.key 2048  

2015816174647523.jpg (768×167)

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

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

2015816174708350.jpg (901×376)

制作網站的證書并用CA簽名認證
這里,假設網站域名為www.example.com,生成com.example.com證書私鑰:

 

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

2015816174727737.jpg (826×165)

    制作解密后的www.example.com證書私鑰:

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


2015816174745612.jpg (937×71)

    生成簽名請求:

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

   

2015816174821668.jpg (1005×491)

    可以在Common Name中填入網站域名,即可生產該網站的證書。
用CA進行簽名:

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

2015816174842731.jpg (566×98)

解決方法:

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

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

基于Nginx搭建HTTPS虛擬主機
虛擬主機配置文件

  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.*;  
     
    #為一個server開啟ssl支持 
    ssl         on; 
    #為虛擬主機指定pem格式的證書文件 
    ssl_certificate   /home/wangzhengyi/ssl/wangzhengyi.crt;  
    #為虛擬主機指定私鑰文件 
    ssl_certificate_key /home/wangzhengyi/ssl/wangzhengyi_nopass.key;  
    #客戶端能夠重復使用存儲在緩存中的會話參數時間 
    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é)議的服務器密碼需求優(yōu)先級高于客戶端密碼 
    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服務器優(yōu)化
方法
SSL操作需要消耗CPU資源,所以在多處理器的系統(tǒng),需要啟動多個工作進程,而且數量需要不少于可用CPU的個數。最消耗CPU資源的SSL操作是SSL握手,有兩種方法可以將每個客戶端的握手操作數量降到最低:

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

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

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

優(yōu)化示例

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

nginx強制使用https訪問(http跳轉到https)


基于nginx搭建了一個https訪問的虛擬主機,監(jiān)聽的域名是test.com,但是很多用戶不清楚https和http的區(qū)別,會很容易敲成http://test.com,這時會報出404錯誤,所以我需要做基于test.com域名的http向https的強制跳轉

nginx的rewrite方法


思路
這應該是大家最容易想到的方法,將所有的http請求通過rewrite重寫到https上即可

配置

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


搭建此虛擬主機完成后,就可以將http://test.com的請求全部重寫到https://test.com上了


nginx的497狀態(tài)碼

error code 497

  497 - normal request was sent to HTTPS 


解釋:當此虛擬站點只允許https訪問時,當用http訪問時nginx會報出497錯誤碼

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

配置

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

index.html刷新網頁


思路
上述兩種方法均會耗費服務器的資源,我們用curl訪問baidu.com試一下,看百度的公司是如何實現baidu.com向www.baidu.com的跳轉

2015816174906881.png (1024×410)

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

index.html

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

相關文章

  • Python操作HDF5文件示例

    Python操作HDF5文件示例

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

    python實現websocket的客戶端壓力測試

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

    Python實現基于PIL和tesseract的驗證碼識別功能示例

    這篇文章主要介紹了Python實現基于PIL和tesseract的驗證碼識別功能,結合實例形式分析了Python使用PIL與tesseract進行驗證碼識別操作的具體技巧與相關注意事項,需要的朋友可以參考下
    2018-07-07
  • Python使用APScheduler實現定時任務過程解析

    Python使用APScheduler實現定時任務過程解析

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

    Python實現批量修改圖片大小

    在日常生活中經常有需要調整圖片大小的需求,一張兩張的還好,但是如果需要幾十張幾百張甚至幾千張,就可以考慮使用Python腳本來執(zhí)行了,下面小編就來和大家分享幾個Python可以批量修改圖片大小的腳本吧
    2023-07-07
  • spyder 在控制臺(console)執(zhí)行python文件,debug python程序方式

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

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

    Python 可視化調色盤繪制

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

    python 使用cycle構造無限循環(huán)迭代器

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

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

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

    python中os庫的具體使用

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

最新評論

嘉禾县| 麻江县| 龙泉市| 遵义县| 遂溪县| 伊吾县| 泽普县| 高碑店市| 郯城县| 永安市| 司法| 梨树县| 霍山县| 沙雅县| 北京市| 乌兰浩特市| 扶余县| 灵武市| 如皋市| 上犹县| 天等县| 德江县| 六盘水市| 阿拉善右旗| 上犹县| 安乡县| 开阳县| 柳江县| 威海市| 遂川县| 奉化市| 沁阳市| 牡丹江市| 台南市| 潮安县| 周宁县| 永康市| 锡林郭勒盟| 历史| 江津市| 沾益县|