https服務對於乙個前端開發者來說是乙個天天打招呼的老夥計了,但是之前我跟https打交道的場景一直是抓包,自己沒有親自搭建過https服務,對https的底層知識也是一知半解。最近正好遇到乙個使用者場景,頁面需要調起手機的攝像頭,這就要求頁面服務必須是https的,所以就嘗試搭建了https的靜態服務,過程挺曲折的,所以總結一下分享給大家,希望能給看過本文的朋友一點幫助,提高工作效率。
https = http + tsl(transport layer security)在應用層和傳輸層之間新增了乙個會話層,會話層採用ssl協議,完成資料的加密、身份認證、資料完整性校驗。如下圖所示:
要完成以上功能,tls的連線在tcp連線的基礎之上,需要增加握手次數,如下圖所示:
新增的往返過程可以簡單根據下圖示意理解。
證書的獲取過程是:向證書認證中心—ca提出申請,在ca判明申請者的身份後,為其分配乙個公鑰,然後ca將該公鑰與申請者的身份資訊綁在一起,然後用ca的私鑰為其加密簽名,簽名後頒發給申請者。證書中的內容是使用者公鑰、使用者資訊、頒發機構、有效期等。分配的公鑰可以通過證書請求中的使用者私鑰來獲取。使用者想要鑑別證書的真偽,只能用ca的公鑰對證書上的簽字進行驗證。下圖是證書獲取過程的示意圖:
new_certs_dir = $dir/newcerts # 新證書存放位置
private_key = $dir/private/cakey.pem #ca私鑰
database = $dir/index.txt #證書索引資料庫檔案
serial = $dir/serial 頒發證書的序列號
(1)建立ca私鑰
cd ca_path #ca_path為democa的上級目錄,因為配置檔案中ca預設的私鑰路徑是./democa/private/cakey.pem,所以一定要在該目錄執行命令,否則會報錯(2)建立ca證書申請openssl genrsa -out ./democa/private/cakey.pem 2048
openssl req -new -in .democa/private/cakey.pem -days 365 -out .democa/cacsr.pem申請的過程中需要輸入使用者資訊,如country name,organization name,email address等,注意自己填寫的資訊。
(3)建立自簽證書
openssl ca -selfsign -in careq.pem -out ./democa/cacert.crt在任意機器或路徑下建立使用者私鑰
(1)建立使用者私鑰
openssl genrsa -out userkey.pem 2048(2)建立使用者證書申請
openssl req -new -in userkey.pem -days 365 -out usercsr.pem(3)ca簽名需要ca簽名的話,就需要將使用者申請檔案usercsr.pem拷貝到ca所在的機器上,現在把使用者的檔案放置在與democa同級的demouser目錄中。ca預設的私鑰路徑是./democa/private/cakey.pem,因此仍需要切換到./democa的上級目錄。
cd ca_path #ca_path為democa的上級目錄,因為配置檔案中ca預設的私鑰路徑是./democa/private/cakey.pem,所以一定要在該目錄執行命令,否則會報錯經過以上兩步的操作,我們拿到了使用者證書user.crt和使用者金鑰userkey.pem,接下來就要在httpd的配置檔案中配置https。openssl ca -in ./demouser/userkey.pem -out ./demouser/user.crt
(1)確認ssl模組(mod_ssl.so)開啟
(2)設定https相應的虛擬埠配置,預設為443埠
配置**如下:
(3)重啟httpd即可
Nginx搭建靜態資源服務配置詳解
第一種 單個server,root配置根目錄 nginx配置檔案中,server模組預設配置了location,如下 server 上述location的配置是 當我們訪問192.168.121.140 8088 或 192.168.121.140 8088,nginx會去html root 配置項...
自製證書搭建https服務
第一步,自製ca證書和server證書,私鑰 自製ca私鑰 openssl genrsa des3 out ca.key 4096 自製ca證書 openssl req new x509 days 3650 key ca.key out ca.crt 自製server私鑰,生成免密碼版本 opens...
搭建https服務 部署服務(2)
上一節介紹了htpps協議,以及獲取htpp證書的方法。這一節將介紹如何部署htpps服務。這邊以常用的linux nginx為例。1.首先將在startssl獲取的證書,上傳至伺服器。2.修改nginx的配置,並且重啟nginx,重啟時需要輸入證書密碼。nginx配置如下 server 3.將ht...