Node.js環(huán)境安裝SSL證書
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細閱讀。
如果輕量應(yīng)用服務(wù)器已綁定了域名,可以為域名設(shè)置HTTPS加密訪問,以較低的成本將數(shù)據(jù)傳輸協(xié)議從HTTP轉(zhuǎn)換成HTTPS,實現(xiàn)網(wǎng)站的身份驗證和數(shù)據(jù)加密傳輸,防止數(shù)據(jù)在傳輸過程中被篡改或信息泄露。本文以部署Node.js環(huán)境的輕量應(yīng)用服務(wù)器為例,介紹如何在服務(wù)器中安裝SSL證書,并開啟HTTPS加密訪問。
前提條件
背景信息
Node.js是一個基于Chrome V8引擎的JavaScript運行環(huán)境,用于方便地搭建響應(yīng)速度快、易于擴展的網(wǎng)絡(luò)應(yīng)用。Node.js使用事件驅(qū)動,非阻塞I/O模型而得以輕量和高效,非常適合在分布式設(shè)備上運行數(shù)據(jù)密集型的實時應(yīng)用。更多信息,請參見Node.js官網(wǎng)。
通過數(shù)字證書管理服務(wù)(Certificate Management Service)完成證書購買、申請,并將證書部署到您的Web服務(wù)器后,Web服務(wù)將會通過HTTPS加密協(xié)議來傳輸數(shù)據(jù)。HTTPS加密傳輸協(xié)議可激活客戶端瀏覽器到網(wǎng)站服務(wù)器之間的SSL加密通道(SSL協(xié)議),從而實現(xiàn)高強度單向加密傳輸,防止傳輸數(shù)據(jù)被泄露或篡改。HTTPS加密傳輸為手機App、小程序應(yīng)用、代碼程序、控件等上線應(yīng)用市場或應(yīng)用生態(tài)必備特征。HTTPS加密傳輸可為網(wǎng)站帶來以下優(yōu)勢:
安全合規(guī):滿足對應(yīng)App市場或應(yīng)用生態(tài)的要求。
加密傳輸網(wǎng)絡(luò)數(shù)據(jù):加密網(wǎng)站用戶與網(wǎng)站間的數(shù)據(jù)通信,實現(xiàn)傳輸數(shù)據(jù)的防劫持、防篡改、防監(jiān)聽,保障數(shù)據(jù)傳輸安全。
提升網(wǎng)站安全性:規(guī)避釣魚事件發(fā)生。網(wǎng)站用戶在訪問網(wǎng)站時瀏覽器提示安全可信,可以提升網(wǎng)站的可信度、訪問流量和搜索排名。
更多信息,請參見什么是數(shù)字證書管理服務(wù)。
步驟一:創(chuàng)建Node.js輕量應(yīng)用服務(wù)器
在左側(cè)導(dǎo)航欄,單擊服務(wù)器。
在輕量應(yīng)用服務(wù)器售賣頁,完成資源配置。
創(chuàng)建輕量應(yīng)用服務(wù)器的具體操作,請參見創(chuàng)建輕量應(yīng)用服務(wù)器。
其中,您需要在鏡像區(qū)域,選擇應(yīng)用鏡像為Node.js 14.15.2。
步驟二:申請SSL證書
阿里云支持申請免費證書、付費證書或者在其他服務(wù)商申請的證書。免費證書建議用于測試、個人試用等場景,org、jp等特殊域名存在無法申請的情況,正式環(huán)境建議使用付費正式證書,本步驟以申請免費證書為例介紹。如果您需要申請付費正式證書,請參見購買SSL證書。
數(shù)字證書管理服務(wù)已于2024年06月下旬將SSL免費證書更名為個人測試證書(免費版),將升級證書(有效期12個月)變更為個人測試證書(pro)。免費證書更名通知,請參見【通知】免費證書更名。
每個阿里云個人或企業(yè)用戶(以實名認證為準)每個自然年可以一次性申請20張免費證書(每個自然年僅限領(lǐng)取1次)。自然年是每年的01月01日~12月31日,免費領(lǐng)取的證書資源包在每個自然年末將未申請的額度清零(每年12月31日24:00:00),您需要等到第二年的1月1日00:00:00后申請領(lǐng)取當年的免費證書資源包。更多關(guān)于免費證書適用場景、領(lǐng)取規(guī)則和使用限制說明,請參見個人測試證書說明。
購買免費SSL證書
在左側(cè)導(dǎo)航欄,選擇。
在個人測試證書(原免費證書)頁簽,單擊立即購買。
在立即購買面板,參考下表購買個人測試證書,仔細閱讀并勾選服務(wù)協(xié)議,單擊立即購買并完成支付。
配置項
描述
免費版?zhèn)€人測試證書領(lǐng)取示例
產(chǎn)品
SSL證書:即正式證書購買入口。詳細參數(shù)說明,請參見購買SSL證書。
個人測試證書:一般用于測試、個人試用場景。
關(guān)于正式證書和個人測試證書區(qū)別,請參見個人測試證書說明。
個人測試證書
證書類型
個人測試證書(免費版):即免費證書,證書簽發(fā)后有效期3個月。
個人測試證書(pro):需支付基礎(chǔ)的服務(wù)費(68元/張/年)。證書簽發(fā)后有效期為12個月。
個人測試證書(免費版)
服務(wù)
僅個人測試證書(免費版)顯示。
說明個人測試證書不保證OCSP(Online Certificate Status Protocol,在線證書狀態(tài)協(xié)議)穩(wěn)定性。
保持默認
購買數(shù)量
個人測試證書(免費版):默認為20。
每個阿里云個人或企業(yè)用戶(以實名認證為準)每個自然年可以一次性申請20張免費版?zhèn)€人測試證書(每個自然年僅限領(lǐng)取1次)。更多關(guān)于免費版本個人測試證書適用場景、領(lǐng)取規(guī)則和使用限制說明,請參見個人測試證書說明。
說明自然年是每年的01月01日~12月31日,免費領(lǐng)取的證書資源包在每個自然年末將未申請的額度清零(每年12月31日24:00:00),您需要等到第二年的1月1日00:00:00后申請領(lǐng)取當年的免費版?zhèn)€人測試證書資源包。
如果您在一自然年內(nèi)已經(jīng)使用完20張免費版?zhèn)€人測試證書,您可以購買個人測試證書(pro)或HTTPS加速網(wǎng)關(guān),具體操作,請參見個人測試證書升級指南,或直接購買正式證書,具體操作,請參見購買SSL證書。
個人測試證書(pro):一次性購買證書的最少為1張,最大為100張。
保持默認
其他服務(wù)
申請協(xié)助和部署服務(wù)可以為您解決在使用SSL證書時遇到的各種問題。在申請證書時,協(xié)助您梳理申請材料,并主動與CA簽發(fā)機構(gòu)進行協(xié)調(diào),以確保證書在最短時間內(nèi)簽發(fā)。如果您不具備安裝或配置證書的能力,專家可為您提供視頻遠程指導(dǎo),幫助您快速定位問題,解決您的技術(shù)難題。更多信息,請參見購買證書申請協(xié)助和部署服務(wù)。
不需要
申請協(xié)助服務(wù):工作日服務(wù)時間內(nèi)(9:00~18:00)幫助您快速簽發(fā)SSL證書。
部署服務(wù):工作日服務(wù)時間內(nèi)(9:00~18:00)幫助您部署RSA或ECC算法證書。
申請協(xié)助+部署服務(wù):證書申請和部署全流程協(xié)助,支持非工作日服務(wù)時間(9:00~18:00),幫您快速完成證書簽發(fā)和部署。
不需要
提交免費證書申請
在左側(cè)導(dǎo)航欄,選擇。
在SSL證書頁面,單擊個人測試證書(原免費證書)頁簽。
在個人測試證書(原免費證書)頁簽,單擊創(chuàng)建證書。
在證書申請面板,配置證書參數(shù),選中快捷簽發(fā),單擊提交審核。
在證書申請面板,按照下表配置證書參數(shù),選中快捷簽發(fā),并單擊提交審核。
配置項
說明
證書類型
選擇個人測試證書(免費版)。
證書剩余數(shù)量/總數(shù)
表示剩余可申請的證書個數(shù)/總共可申請的證書個數(shù)。只有當剩余可申請的證書個數(shù)不為0時,您才可以創(chuàng)建證書。
域名名稱
填寫該證書用于保護的網(wǎng)站域名。
數(shù)量
證書數(shù)量,默認為1,不支持增加。
快捷簽發(fā)
說明快捷簽發(fā)是指在當前步驟填寫證書申請資料并提交審核。
域名驗證方式
如果您當前的阿里云賬號與域名的DNS云解析服務(wù)所在賬號一致,申請證書時,阿里云數(shù)字證書管理服務(wù)將會自動識別,并默認選擇自動DNS驗證方式,且不支持修改,提交審核后,系統(tǒng)會自動進行DNS驗證。
如果您當前的阿里云賬號與域名的DNS云解析服務(wù)所在賬號不一致,您可以選擇以下任意一種方式進行域名所有權(quán)驗證。
手動DNS驗證:您需要手動修改域名的DNS解析記錄,并在證書綁定域名的域名控制臺,添加一條解析記錄用于域名所有權(quán)驗證。
域名授權(quán)自動化驗證:您需要手動在對應(yīng)的DNS域名解析服務(wù)商,添加一條CNAME類型的解析記錄用于域名所有權(quán)驗證。添加成功后,后續(xù)申請對應(yīng)域名的SSL證書時可以直接選擇該方式,且無需再添加域名解析記錄。具體操作,請參見域名所有權(quán)驗證。
文件驗證:您需要手動從數(shù)字證書管理服務(wù)控制臺下載一個專用的證書驗證文件,然后將該文件上傳到站點服務(wù)器的指定驗證目錄。
聯(lián)系人
從下拉列表中選擇本次證書申請的聯(lián)系人(包含郵箱、手機號碼等聯(lián)系信息)。
重要收到證書申請請求后,CA中心會向聯(lián)系人郵箱發(fā)送證書申請驗證郵件或者通過聯(lián)系人手機號碼溝通審核相關(guān)事宜。因此,請務(wù)必確保聯(lián)系人信息準確且有效。
如果您未創(chuàng)建過聯(lián)系人,可以單擊新建聯(lián)系人,新建一個聯(lián)系人。數(shù)字證書管理服務(wù)會保存新建的聯(lián)系人信息,方便您下次使用。關(guān)于新建聯(lián)系人的具體配置,請參見管理聯(lián)系人。
所在地
選擇申請人所在城市或地區(qū)。
密鑰算法
證書使用的密鑰算法。
默認選擇為RSA,且不支持修改。RSA算法是目前在全球應(yīng)用廣泛的非對稱加密算法,兼容性好。
CSR生成方式
CSR(Certificate Signing Request)文件是您的證書請求文件。該文件包含您的SSL證書信息,例如,證書綁定的域名、證書持有主體的名稱及地理位置信息等。
您向CA中心提交證書申請時,必須提供CSR。CA中心審核通過您的證書申請后,將使用其根CA私鑰為您提供的CSR簽名,生成SSL證書公鑰(即簽發(fā)給您的SSL證書)。SSL證書的私鑰即您在生成CSR時同時生成的私鑰。
您可以選擇以下CSR生成方式:
系統(tǒng)生成:表示由數(shù)字證書管理服務(wù)自動使用您在密鑰算法指定的加密算法生成CSR文件(您可以在證書簽發(fā)后下載證書和私鑰)。推薦您使用該方式。
手動填寫:表示您是使用OpenSSL或Keytool等工具手動生成的CSR和私鑰文件,并將CSR內(nèi)容復(fù)制粘貼到CSR文件內(nèi)容(私鑰文件由您自行保管)。關(guān)于如何制作CSR和私鑰文件,請參見如何制作CSR文件。
重要CSR生成方式選擇手動填寫后,您將無法在數(shù)字證書管理控制臺將該證書部署到阿里云產(chǎn)品中。
申請國密算法證書且選擇手動填寫CSR時,由于私鑰不在阿里云,獲得的加密證書需要私鑰配合完成解密,請您聯(lián)系私鑰生成方協(xié)助完成解密工作。
您提供的CSR內(nèi)容正確與否直接關(guān)系到證書申請流程是否能順利完成,建議您使用數(shù)字證書管理服務(wù)自動生成的CSR(即選擇系統(tǒng)生成方式),避免因提供的CSR內(nèi)容不正確導(dǎo)致證書審核失敗。
請確保您手動填寫的CSR使用的加密算法與密鑰算法中選擇的算法相同,否則您將無法順利提交證書審核。 如果您不清楚CSR使用的加密算法,您可以通過查看CSR工具查看,具體操作,請參見查看CSR詳情。
在制作CSR文件時請務(wù)必保存好您的私鑰文件。私鑰和SSL證書一一對應(yīng),一旦私鑰丟失,您的SSL證書也將不可使用。阿里云不負責保管您的私鑰,如果您的私鑰丟失,您必須重新購買SSL證書。
選擇已有的CSR:表示從您在數(shù)字證書管理服務(wù)控制臺創(chuàng)建的CSR或上傳的CSR中,選擇與證書綁定域名相匹配的CSR。
您必須先使用數(shù)字證書管理服務(wù)提供的CSR管理工具手動創(chuàng)建CSR或上傳已有的CSR,才可以使用該方式。具體操作,請參見創(chuàng)建CSR和上傳CSR。
重要您選擇的CSR使用的加密算法需要和您在密鑰算法中設(shè)置的算法相同,否則您將無法順利提交證書審核。如果您不清楚CSR使用的加密算法或域名,您可以通過查看CSR工具查看,具體操作,請參見查看CSR詳情。
CSR文件內(nèi)容
只有在CSR生成方式為手動填寫或選擇已有的CSR時,需要配置該參數(shù)。在此處填寫您的CSR文件內(nèi)容。
按照驗證信息中的提示,完成域名所有權(quán)的驗證。
域名所有權(quán)驗證成功后,證書通常會在1~2個工作日完成簽發(fā),最快10分鐘內(nèi)簽發(fā)。證書簽發(fā)后,證書狀態(tài)將變更為已簽發(fā)。如果SSL證書長時間未簽發(fā),請您檢查DNS驗證配置是否正確。域名所有權(quán)驗證更多信息和常見報錯,請參見域名所有權(quán)驗證。
說明如果您未選中快捷簽發(fā),創(chuàng)建證書申請后,您將獲得一個證書(對應(yīng)要申請的證書)。您需要在該證書操作列,單擊證書申請,填寫證書申請信息并提交審核后,再按照該步驟進行驗證。
步驟三:配置SSL證書
證書簽發(fā)后,證書狀態(tài)將變更為已簽發(fā),您需要下載和配置證書。關(guān)于證書下載和安裝的更多信息,請參見SSL證書安裝指南。
下載證書。
在證書所在行的操作列,單擊下載。
在證書下載對話框中,根據(jù)服務(wù)器類型下載證書。
本示例使用Nginx做轉(zhuǎn)發(fā),所以下載Nginx版本。
警告下載證書后,請妥善保存,避免證書泄露導(dǎo)致您的網(wǎng)站被攻擊。
壓縮包解壓之后會得到2個文件,具體如下圖所示。
使用WinSCP、Xshell等工具上傳.key證書文件和.pem證書私鑰文件到輕量應(yīng)用服務(wù)器的指定目錄,例如:/home。
遠程連接輕量應(yīng)用服務(wù)器。具體操作,請參見遠程連接Linux服務(wù)器。
執(zhí)行以下命令,新建https_server_test.js項目文件。
cd /home sudo touch https_server_test.js
執(zhí)行以下命令,修改https_server_test.js文件。
vim https_server_test.js
按i鍵進入編輯模式,并將以下內(nèi)容添加至https_server_test.js文件中。內(nèi)容如下所示:
// 啟動https服務(wù)需要https包 // 讀取文件需要fs包 const https = require('https'); const fs = require('fs'); // 將兩個證書文件讀取放到options對象中 // 使用readFileSync()方法,順序地執(zhí)行讀文件和啟動服務(wù)操作 const options = { key: fs.readFileSync('/home/cert-file-name.key'), cert: fs.readFileSync('/home/cert-file-name.pem') }; // 創(chuàng)建服務(wù)器,啟動服務(wù)器,設(shè)置監(jiān)聽端口號 https.createServer(options, (req, res) => { res.end('hello world\n'); }).listen(443);
說明如下:
/home/cert-file-name.key:需替換為實際上傳私鑰文件的絕對路徑。
/home/cert-file-name.pem:您需要輸入實際上傳SSL證書文件的絕對路徑。
重要證書文件的路徑需要配置正確,否則證書配置失敗,無法使用HTTPS訪問。
添加完成后,按
Esc
鍵退出編輯模式,并輸入:wq
后按Enter
鍵,保存并退出文件。執(zhí)行以下命令,使SSL證書生效。
sudo node https_server_test.js
使用瀏覽器訪問
https://輕量應(yīng)用服務(wù)器對應(yīng)的域名
。如果瀏覽器地址欄中出現(xiàn)小鎖標志,表示證書已經(jīng)安裝成功。
如果網(wǎng)站無法通過HTTPS正常訪問,需確認您安裝證書的輕量應(yīng)用服務(wù)器443端口是否已開啟或被其他工具攔截。放行443端口的具體操作,請參見管理防火墻。