HTTP和HTTPS的基本概念
HTTP:是互聯網上應用最爲普遍的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可使瀏覽器更加高效,使網絡傳輸減小。
HTTPS:是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容就須要SSL。
HTTPS協議的主要做用能夠分爲兩種:一種是創建一個信息安全通道,來保證數據傳輸的安全;另外一種就是確認網站的真實性
http協議的缺點php
HTTPS的優勢html
前往freessl免費申請證書thinkphp
1.輸入域名點擊建立apache
2.輸入平時本身用的郵箱,CSR選擇瀏覽器生成,而後點擊建立瀏覽器
3.會生成一個DNS配置,而後咱們前往對應的所購買的域名服務商去添加一條解析規則安全
4.我是在阿里雲購買的域名因此前往阿里雲控制檯找到本身購買的域名而後填寫上面的對應規則服務器
5.當配置完成後,回到剛纔下發的ssl證書的網站中,點擊驗證按鈕,若是配置解析成功會出現如下界面,不然失敗,請仔細從新填寫,或者等5到10分鐘,等待解析規則生效網絡
6.複製裏面的內容保存成相應文件架構
打開httpd-ssl.conf文件,添加一條記錄,通常在xmapp\apache\conf\extra
下面app
<VirtualHost *:443> DocumentRoot "你網站的路徑" #如 C:\php\wwww\itnavs\blogs\blogs-itnavs ServerName www.blogs.itnavs.com ServerAlias blogs.itnavs.com ServerAdmin 470193837@qq.com ServerName itnavs.com SSLEngine on SSLCertificateFile "剛纔生成的ssl路徑.crt" #如 https/itnavs/blogs/blogs_itnavs.crt SSLCertificateKeyFile "剛纔生成的ssl路徑.key" #如 https/itnavs/blogs/blogs_itnavs.key SSLCertificateChainFile "剛纔生成的ssl路徑.crt" #如 https/itnavs/blogs/blogs_itnavschain.crt <Directory "你網站的路徑"> #如 C:\php\wwww\itnavs\blogs\blogs-itnavs Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
重啓Apache,輸入https://blogs.itnavs.com/ 瀏覽器如若出現綠色鎖說明配置成功
域名配置https已完成
ServerAdmin指令:
語法: ServerAdmin email-address|URL
用來設置服務器返回給客戶端的錯誤信息中包含的管理員郵件地址。便於用戶在收到錯誤信息後能及時與管理員取得聯繫。
ServerName指令:
語法:ServerName [scheme://] FQDN [:port]
用來設置服務器用於辨識本身的主機名和端口號。主要用於建立重定向URL。
DocumentRoot指令:
語法:DocumentRoot directory-path
用來設置httpd提供服務的目錄。即你所在項目入口處的文件夾。
ErrorLog指令:
語法: ErrorLog file-path
來設置當服務器遇到錯誤時記錄錯誤日誌的文件。若是file-path不是以/開頭的絕對路徑,那麼將會被認爲是一個相對於ServerRoot的相對路徑。
CustomLog指令:
語法: ErrorLog file-path common
設置日誌文件,並指明日誌文件所用的格式(一般經過格式的名字)。
<Directory 目錄路徑>...</Directory>
爲主目錄或虛擬目錄設置權限
DirectoryIndex index.html index.htm index.php
設置訪問目錄後進入的默認文件
AllowOverride all
定義位於每一個目錄下.htaccess(訪問控制)文件中的指令類型。none爲禁止使用.htaccess文件
特性:Indexes
MultiViews
All
ExecCGI
FollowSymLinks
Includes
IncludesNoExec
命令 | 說明 |
---|---|
Indexes | 容許目錄瀏覽,當客戶僅指定要訪問的目錄,但沒有指定要訪問目錄下的哪一個文件,並且目錄下不存在默認文檔時,Apache以超文本形式返回目錄中的文件和子目錄列表(虛擬目錄不會出如今目錄列表中) |
MultiViews | 容許內容協商的多重視圖,MultiViews實際上是Apache的一個智能特性。當客戶訪問目錄 中一個不存在的對象時,如訪問「http://192.168.66.6/data/a」,則Apache會查找這個目錄下全部a.*文件。因爲 data目錄下存在a.gif文件,所以Apache會將a.gif文件返回給客戶,而不是返回出錯信息 |
All | All包含了除MultiViews以外的全部特性,若是沒有Options語句,默認爲All |
ExecCGI | 容許在該目錄下執行CGI腳本 |
FollowSymLinks | 能夠在該目錄中使用符號鏈接 |
Includes | 容許服務器端包含功能 |
IncludesNoExec | 容許服務器端包含功能,但禁用執行CGI腳本 |
一旦定義容許目錄瀏覽 ,就會將Web站點的文件夾和文件名結構暴露給黑客。目錄瀏覽還會容許黑客瀏覽文件並掌握服務器配置信息,因此指定該權限每每帶來安全性上的隱患。除非有充足的理由要使用目錄瀏覽,不然應該禁用它
RewriteCond語法參數: # 位於行首時表示註釋。 -d 測試字符串是不是已存在的目錄 -f 測試字符串是不是已存在的文件 -s 測試字符串所指文件是否有"非零"值(非空的常規文件) -l視爲一個路徑名並測試它是否爲一個存在的符號鏈接(符號鏈接) -x(可執行)視爲一個路徑名並測試它是否爲一個存在的、具備可執行權限的文件。該權限由操做系統檢測 RewriteRule語法參數: [F] Forbidden(禁止) : 命令服務器返回 403 Forbidden錯誤給用戶瀏覽器 [L] Last rule(最後一條規則) : 告訴服務器在本條規則執行完後中止重寫URL [N] Next(下一條規則) : 告訴服務器繼續重寫,指導全部重寫指令都執行過 [G] Gone(丟失) : 命令服務器返回410 GONE(no longer exists)錯誤消息 [P] Proxy(代理) : 告訴服務器經過mod_proxy模塊處理用戶請求 [C] Chain(捆綁) : 告訴服務器將當前的規則和前面的規則進行捆綁 [R] Redirect(重定向) : 命令服務器發出重定向消息,以便用戶瀏覽器發出rewritten/modified(重寫/修改)URL的請求 [NC] No Case(不區分大小寫) : 對客戶端請求的URL不區分大小寫 [PT] Pass Through(放行) : 讓mod_rewrite模塊將重寫的URL傳回給Apache作進一步處理 [OR] Or(邏輯或) : 用邏輯"或"將兩個表達式鏈接在一塊兒,若是結果爲"真",則會應用後繼的相關規則 [NE] No Escape(禁用轉義) : 命令服務器在輸出時禁用轉義字符 [NS] No Subrequest(禁用子請求) : 若是存在內部子請求,則跳過當前命令 [QSA] Append Query String(追加查詢字符串) : 命令服務器在URL末尾追加查詢字符串 [S=x] Skip(跳過) : 若是知足某指定的條件,則跳事後面第x調規則 [E=variable:value] Environmental Variable(環境變量) : 命令服務器將值value賦給變量variable [T=MIME-type] Mime Type(MIME類型) : 聲明目標資源所屬的MIME類型 例如thinkphp隱藏index.php <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>