傳統的http協議傳輸的是明文資訊,這就導致了一定的安全風險。而https則解決了這一問題,https在http協議的基礎上增加了ssl/tls,用於通過證書來驗證伺服器的身份,並且為客戶端和伺服器之間的通訊提供加密服務。現在大部分的**都開始使用https協議提供服務。
使用https協議需要先向ca申請乙個ssl證書,其使用的埠號為443而不是http的80埠。ca,certificate authority,證書頒發機構,負責發放和管理數字證書的權威機構,並做為受信任的第三方,承擔公鑰體系中公鑰的合法性驗證。ca制定政策和具體步驟來驗證、識別使用者身份,並對使用者證書進行簽名,以確保證書持有者的身份和公鑰的擁有權。
根據使用環境的不同,ssl證書可分為以下幾種:
ssl使用的是公鑰私鑰體系,所以向ca申請ssl證書前必須先生成乙個私鑰檔案(.key)並使用該私鑰簽署乙個證書簽署請求檔案(.crs),證書簽署請求檔案包含申請者的dn(distinguished name,標識名)和公鑰資訊。申請者將該檔案提交給ca後,ca會向申請者返回乙個證書檔案(.crt)。
可使用openssl來生成私鑰和證書簽署請求檔案,命令如下:
[root@localhost ~]# openssl req -new -newkey rsa:2048 -sha256 -nodes -out abc.csr -keyout abc.key -subj '/c=cn/st=fujian/l=fuzhou/o=abc inc./ou=web/cn=abc.com'命令詳解:生成乙個新的rsa金鑰並輸出abc.csr和abc.key兩個檔案。
命令執行後會在當前目錄下生成abc.csr和abc.key兩個檔案。其中的abc.csr就可以提交給ca以申請ssl證書,ca通過驗證後會提供給我們證書檔案。
由於這裡的網域名稱abc.com沒有進行網域名稱解析,ca是無法驗證這個網域名稱的,所以也無法為它頒發證書。為了解決這種情況,我們可以使用openssl自己頒發一張證書,當然,這張證書是沒有經過認證的,使用時就會發現問題了。執行以下命令:
[root@localhost nginx]# openssl req -new -newkey rsa:2048 -sha256 -nodes -x509 -days 365 -out abc.crt -keyout abc.key -subj '/c=cn/st=fujian/l=fuzhou/o=abc inc./ou=web/cn=abc.com'此時,當前目錄下會生成abc.crt和abc.key兩個檔案。
nginx的配置檔案中已經有一段關於https的配置,內容如下:
#}詳解:還可以新增以下設定:
這裡為這台執行nginx的主機的www.abc.com配置了https,並在客戶端hosts檔案中做了本地解析,然後訪問
安裝的eset防毒軟體跳出了安全警告,不信任的證書。
因為ssl證書沒有經過ca的認證,所以火狐也阻止了。但是已經出現了證書的驗證資訊,就說明nginx的https配置成功。
青蛙學Linux Nginx基礎
nginx是一款輕量級的高效能http和反向 伺服器以及imap pop3郵件 伺服器,由俄羅斯人伊戈爾 賽索耶夫為俄羅斯訪問量第二的站點rambler.ru開發的。nginx為開源軟體,因其併發能力強 系統資源占用小等優點而受到大家的歡迎。nginx不僅可以做為http和反向 伺服器,也可以做為負...
青蛙學Linux Apache基礎
apache通常指apache http server,它是世界上使用量排名第一的web伺服器軟體,是最流行的web伺服器之一。apache http server的官網為 1.1 安裝apr 安裝apr root localhost apr 1.6.5 configure prefix usr l...
青蛙學Linux 程序管理
程序,process,是乙個具有一定獨立功能的程式關於某個資料集合的一次執行活動。它是作業系統動態執行的基本單元,在傳統的作業系統中,程序既是基本的分配單元,也是基本的執行單元。程序的概念主要有兩點 第一,程序是乙個實體。每乙個程序都有它自己的位址空間,一般情況下,包括文字區域 text regio...