里云,騰訊云以及華為云都有免費的https證書,但都只能用于單域名,而我的網(wǎng)站應(yīng)用是SaaS服務(wù),是多租戶,是每個租戶都可以分別設(shè)置自己的獨立二級域名,因此就需要一種泛域名證書。我總不能來一個用戶去制作一個證書吧!
經(jīng)過很長一段時間的摸索,最終發(fā)現(xiàn)一個免費而且好用的https泛域名證書網(wǎng)站。OHTTPS這個網(wǎng)站還支持自動更新與部署。當然為了安全,我沒有使用這些服務(wù),而只是把它作為一個工具使用。
接下來,我簡單說一下使用過程,因為這個過程真的就很簡單!
首先,是打開網(wǎng)站注冊一個賬號,這里就不上圖了。
其次,就是添加域名。我們直接輸入*.byeap.com,注意域名前面一定要加*號,如下圖所示:
接著,就是驗證域名,這里是通過域名解析驗證。這也很好理解,就是你得證明這是你的域名啊。根據(jù)提示到域名供應(yīng)商那邊增加個cname解析即可。這里我也不上圖了。
建議這里cname就一直保留著,以后更新證書也比較簡單。
然后,就是部署證書以及如何設(shè)置nginx了。
我這邊下載了以上紅械框的兩個文件,一個是*.key文件,一個是*.pem文件。我把它們分別重命名為:
大家需要注意這兩個文件的順序!接著在nginx配置https,這里不解釋,直接上配置內(nèi)容:
server {
listen 80;
listen 443 ssl;
server_name byeap.com www.byeap.com *.byeap.com;
ssl_certificate_key cert/byeap.com.cert.key;
ssl_certificate cert/byeap.com.cert.pem;
location / {
root /opt/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
注意:ssl_certificate_key和ssl_certificate指的文件路徑不能錯!
配置修改好后,還要記得 nginx -s reload一下哦!
最后,就是驗證效果。
來個瀏覽器,檢測一下成果:
1、輸入https://byeap.com/
2、輸入https://doc.byeap.com/
經(jīng)過測試所有網(wǎng)站都可以正常顯示小鎖啦!
是不是感覺網(wǎng)站很正規(guī),是不是覺得過程很簡單!
如果有不清楚的地方,歡迎留言,或加我聯(lián)系方式。
1,首先,訪問JoySSL官方網(wǎng)站。點擊頁面右上角的“注冊”按鈕,填寫必要的注冊信息,包括郵箱地址、設(shè)置密碼等。完成注冊后,登錄您的JoySSL賬號。,2,登錄后,點擊網(wǎng)站上的“免費SSL證書”選項。JoySSL提供了多種類型的免費SSL證書,包括單域名證書、多域名證書和通配符證書。根據(jù)您的需求選擇合適的證書類型。
免費SSL證書申請地址:https://www.joyssl.com/certificate/select/free.html?nid=5
1,輸入您需要為哪個域名申請證書,確保域名的所有權(quán)在您手中。
2,JoySSL會提供兩種常見的驗證方式:
DNS驗證:您需要在域名管理面板中添加JoySSL提供的特定CNAME記錄,以便系統(tǒng)能夠驗證域名所有權(quán)。
文件驗證:將JoySSL提供的驗證文件上傳至您的網(wǎng)站服務(wù)器指定目錄下,以便通過服務(wù)器上的文件來確認域名控制權(quán)。
完成上述驗證步驟后,提交申請,然后耐心等待JoySSL審核并通過您的驗證請求。
一般情況下,由于JoySSL采用國際服務(wù)器進行簽發(fā),簽發(fā)速度較快,通常可在3-5分鐘內(nèi)完成驗證并簽發(fā)證書。
1,驗證成功后,您會在JoySSL賬戶后臺收到通知,此時可以下載已簽發(fā)的SSL證書及相關(guān)中間證書鏈文件。
2,根據(jù)您的服務(wù)器環(huán)境(如Apache、Nginx、IIS等),按照JoySSL提供的教程或技術(shù)支持文檔,將證書文件正確地安裝到您的服務(wù)器上。
1,安裝證書后,在服務(wù)器配置中啟用HTTPS協(xié)議并指向正確的SSL證書路徑。
2,檢查HTTPS服務(wù)是否正常啟動并能正確加載證書,確保網(wǎng)站可以通過HTTPS訪問。
、先說說Nginx-HTTPS加密技術(shù)
超文本傳輸安全協(xié)議(HTTPS)是以安全為目標的HTTP通道,簡單來說就是HTTP安全版。https由兩個部分組成:HTTP+SSL/TLS,在http基礎(chǔ)上加上了一層加密信息模塊,服務(wù)端和客戶端的信息插損胡都會通過TLS進行加密,傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)
為了解決HTTP協(xié)議的這些缺陷,需要使用另一種協(xié)議:HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩裕琀TTPS在http的基礎(chǔ)上加了SSL協(xié)議,SSL依靠證書驗證身份,并為瀏覽器和服務(wù)器之間通信加密;
SSL證書是一種數(shù)字證書,使用Secure Socket Layer協(xié)議在瀏覽器和web服務(wù)器之間建立一條安全通道,從而實現(xiàn)數(shù)據(jù)信息在客戶端和服務(wù)器之間的加密傳輸,保證雙方傳遞信息的安全性,不可被第三方竊聽,而且用戶可以通過服務(wù)器證書驗證所訪問網(wǎng)站是否真實可靠;
加密的HTTPS和HTTP的區(qū)別:超文本傳輸協(xié)議HTTP協(xié)議被用于在web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息,HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的加密數(shù)據(jù),如果攻擊者截取了web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報文,就可以直接讀取其中信息,因此,http協(xié)議不適合傳輸一些銘感信息;
HTTPS加密,解密,驗證完成過程如圖所示:
首先客戶端發(fā)送請求,服務(wù)端接受到請求之后并申請生成公私秘鑰,同時將公鑰證書發(fā)送給客戶端,客戶端收到之后并通過TLS進行解析驗證,如果證書沒有問題就會在客戶端生成一個加密隨機值,將隨機值發(fā)送給服務(wù)端,服務(wù)端接收到之后,用自己的私鑰解密,從而得到這個隨機值,然后通過這個隨機值對內(nèi)容進行對稱加密。服務(wù)端將用私鑰加密后的信息發(fā)送給客戶端,最后,客戶端用之前生成的私鑰來解密服務(wù)器端發(fā)過來的信息,獲取解密后的內(nèi)容
1)客戶端向服務(wù)端發(fā)起HTTPS請求,用戶在瀏覽器輸入https網(wǎng)址,然后連接到Nginx server的443端口 2)服務(wù)端采用https協(xié)議有一套數(shù)字證書,該證書可以自行配置,也可以向證書管理組織去申請,該證書其本質(zhì)是公鑰和私鑰 3)將公鑰傳送給客戶端,證書包含了很多信息,例如,證書的頒發(fā)機構(gòu),過期時間等等 4)客戶端解析證書,由客戶端的TLS完成,首先會驗證公鑰是否有效,比如頒發(fā)的機構(gòu),過期時間等,如果發(fā)生異常,則會彈出警告信息,提示證書存在問題,如果證書沒有問題,就會隨機生成數(shù)值,然后用證書對該隨機數(shù)值進行加密 5)將證書加密后的隨機值傳送到服務(wù)器,讓服務(wù)器獲取該隨機值,后續(xù)客戶端和服務(wù)端可以通過該隨機值來進行加密解密 6)服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機值,然后把內(nèi)容通過該值進行了對稱加密 7)服務(wù)端將私鑰加密后的信息發(fā)給客戶端 8)客戶端用之前生成的私鑰來解密服務(wù)端發(fā)送過來的信息,獲取解密后的內(nèi)容
2、關(guān)于SSL證書
互聯(lián)網(wǎng)的安全通信,是建立在SSL/TLS協(xié)議之上,SSL/TLS協(xié)議的基本思路是采用公鑰加密法,也就是,客戶端先向服務(wù)器端索取公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密。通過這種加解密機制,可以保障所有信息都是加密傳播,無法竊聽,同時,傳輸具有校驗機制,一旦信息被篡改,可以立刻發(fā)現(xiàn),最后,通過身份證書機制,可以防止身份被冒充。由此可知,SSL證書主要有兩個功能:加密和身份認證。
目前市面上的SSL證書都是通過第三方SSL證書機構(gòu)頒發(fā)的,常見可靠的第三方 SSL證書頒發(fā)機構(gòu)有DigiCert、GeoTrust、GlobalSign、Comodo等。
根據(jù)不同使用環(huán)境,SSL證書可分為如下幾種:
? 企業(yè)級別:EV(Extended Validation)、OV(Organization Validation) ? 個人級別:IV(Identity Validation)、DV(Domain Validation)
其中 EV、OV、IV 需要付費,企業(yè)用戶推薦使用EV或OV證書,個人用戶推薦使用IV證書,DV證書雖有免費的可用,但它是最低端的SSL證書。它不顯示單位名稱,也不能證明網(wǎng)站的真實身份,只能驗證域名所有權(quán),僅起到加密傳輸信息的作用,適合個人網(wǎng)站或非電商網(wǎng)站。
3、使用OpenSSL生成私鑰文件和CSR文件
Nginx配置HTTPS并不復(fù)雜,主要有兩個步驟:簽署第三方可信任的 SSL證書和配置 HTTPS,下面依次介紹。
要配置HTTPS需要用到一個私鑰文件(以.key結(jié)尾)和一個證書文件(以.crt結(jié)尾) ,而證書文件是由第三方證書頒發(fā)機構(gòu)簽發(fā)的,要讓第三方證書頒發(fā)機構(gòu)簽發(fā)證書文件,還需要給他們提供一個證書簽署請求文件(以.csr結(jié)尾)。下面簡單介紹下私鑰文件和csr文件。
? 私鑰文件:以.key結(jié)尾的一個文件,由證書申請者生成,它是證書申請者的私鑰文件,和證書里面的公鑰配對使用,在 HTTPS 握手通訊過程中需要使用私鑰去解密客戶端發(fā)來的經(jīng)過證書公鑰加密的隨機數(shù)信息,它是HTTPS加密通訊過程非常重要的文件,在配置HTTPS的時候要用到。 ? CSR文件:CSR全稱是Cerificate Signing Request,即證書簽署請求文件,此文件里面包含申請者的DN(Distinguished Name,標識名)和公鑰信息,此文件由證書申請者生成,同時需要提供給第三方證書頒發(fā)機構(gòu)。證書頒發(fā)機構(gòu)拿到CSR文件后,使用其根證書私鑰對證書進行加密并生成CRT證書文件,CRT文件里面包含證書加密信息以及申請者的DN及公鑰信息,最后,第三方證書頒發(fā)機構(gòu)會將CRT文件發(fā)給證書申請者,這樣就完成了證書文件的申請過程。
在申請SSL證書之前,證書申請者需要先生成一個私鑰文件和一個CSR文件,可通過openssl命令來生成這兩個文件,操作如下:
[root@iZ23sl33esbZ ~]# openssl req -new -newkey rsa:2048 -sha256 -nodes -out iivey.csr -keyout iivey.key -subj "/C=CN/ST=beijing/L=beijing/O=iivey Inc./OU=Web Security/CN=iivey.com"
上面這個命令會生成一個CRS文件iivey.csr和私鑰文件iivey.key。其中,相關(guān)字段含義如下:
? C字段:即Country,表示單位所在國家,為兩位數(shù)的國家縮寫,如CN表示中國 ? ST字段: State/Province,單位所在州或省 ? L字段: Locality,單位所在城市/或縣區(qū) ? O字段: Organization,此網(wǎng)站的單位名稱 ? OU字段: Organization Unit,下屬部門名稱;也常常用于顯示其他證書相關(guān)信息,如證書類型,證書產(chǎn)品名稱或身份驗證類型或驗證內(nèi)容等 ? CN字段:Common Name,網(wǎng)站的域名
接著,將生成的CSR文件提供給CA機構(gòu),簽署成功后,CA機構(gòu)就會發(fā)給我們一個CRT證書文件,假定這個文件是iivey.crt,在獲得SSL證書文件后,就可以在Nginx配置文件里配置HTTPS了。
4、Nginx下配置SSL證書
要開啟HTTPS服務(wù),其實就是在Nginx上開啟一個443監(jiān)聽端口,下面是HTTPS服務(wù)在Nginx下的配置方式,這里僅列出了server段的配置:
server { listen 443; server_name www.iivey.com; index index.php index.html; root /data/webhtdocs/iivey; ssl on; ssl_certificate iivey.crt; ssl_certificate_key iivey.key; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-Xss-Protection 1; }
簡單介紹下上面每個配置選項的含義:
?ssl on:表示啟用SSL功能。
?ssl_certificate:用來指定CRT文件的路徑,可以是相對路徑,也可以是絕對路徑,本例是相對路徑,iivey.crt文件放在和nginx.conf同級目錄下。
?ssl_certificate_key:用來指定秘鑰文件的路徑,可以是相對路徑,也可以是絕對路徑,本例是相對路徑,iivey.key文件放在和nginx.conf同級目錄下。
?ssl_prefer_server_ciphers on:設(shè)置協(xié)商加密算法時,優(yōu)先使用我們服務(wù)端的加密套件,而不是客戶端瀏覽器的加密套件。
?ssl_protocols:此指令用于啟動特定的加密協(xié)議,這里設(shè)置為“TLSv1 TLSv1.1 TLSv1.2”,TLSv1.1與TLSv1.2要確保openssl版本大于等于openssl1.0.1 ,SSLv3也可以使用,但是有不少被攻擊的漏洞,所以現(xiàn)在很少使用了。
?ssl_ciphers:選擇加密套件和加密算法,不同的瀏覽器所支持的套件和順序可能會有不同。這里選擇默認即可。
?add_header X-Frame-Options DENY:這是個增強安全性的選項,表示減少點擊劫持。
?add_header X-Content-Type-Options nosniff:同樣是增強安全性的選項,表示禁止服務(wù)器自動解析資源類型。
?add_header X-Xss-Protection 1:同樣是增強安全性的選項,表示防止XSS攻擊。
5、驗證HTTPS功能
Nginx的https配置完成后,需要測試下配置是否正常,這里提供兩種方式,第一種方式是直接通過瀏覽器訪問https服務(wù),這里使用火狐瀏覽器進行測試,如果https配置正常的話,應(yīng)該會直接打開頁面,而不會出現(xiàn)如下界面:
出現(xiàn)這個界面,說明https沒有配置成功,需要檢查https配置是否正確。而在打開https頁面后,可能還會出現(xiàn)一種情況,如下圖所示:
這個現(xiàn)象是能夠打開https界面,但是瀏覽器地址欄左邊的小鎖是灰色,并且有個黃色的感嘆號,這說明這個網(wǎng)站的頁面中可能引用了第三方網(wǎng)站的圖片、js、css等資源文件,https認為頁面有引用第三方網(wǎng)站資源的情況是不安全的,所以才出現(xiàn)了警告提示。解決這個問題很簡單,將頁面上所有引用第三方網(wǎng)站的資源文件下載到本地,然后通過本地路徑進行引用即可。
修改所有資源文件到本地服務(wù)器后,再次通過https方式進行訪問,瀏覽器地址欄左邊的小鎖自動變成綠色,并且感嘆號消失,如下圖所示:
至此,nginx下配置https服務(wù)已經(jīng)正常運行。
在瀏覽器下可以查看證書信息(證書廠商、證書機構(gòu)、證書有效期等),點擊瀏覽器地址欄的綠鎖,選擇查看證書,即可查看證書詳細信息,如下圖所示:
驗證SSL證書狀態(tài)還有另外一個方法,那就是通過提供的在線網(wǎng)站進行驗證,讀者可以通過https://myssl.com/網(wǎng)站或https://www.ssllabs.com/ssltest/網(wǎng)站進行在線測試,這些網(wǎng)站可以更詳細的測試SSL證書的狀態(tài)、安全性、兼容性等各方面的狀態(tài)。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。