如果轻量应用服务器已绑定了域名,可以为域名设置HTTPS加密访问,以较低的成本将数据传输协议从HTTP转换成HTTPS,实现网站的身份验证和数据加密传输,防止数据在传输过程中被篡改或信息泄露。本文以部署Node.js环境的轻量应用服务器为例,介绍如何在服务器中安装SSL证书,并开启HTTPS加密访问。
前提条件
背景信息
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于方便地搭建响应速度快、易于扩展的网络应用。Node.js使用事件驱动,非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。更多信息,请参见Node.js官网。
通过数字证书管理服务(Certificate Management Service)完成证书购买、申请,并将证书部署到您的Web服务器后,Web服务将会通过HTTPS加密协议来传输数据。HTTPS加密传输协议可激活客户端浏览器到网站服务器之间的SSL加密通道(SSL协议),从而实现高强度单向加密传输,防止传输数据被泄露或篡改。HTTPS加密传输为手机App、小程序应用、代码程序、控件等上线应用市场或应用生态必备特征。HTTPS加密传输可为网站带来以下优势:
-
安全合规:满足对应App市场或应用生态的要求。
-
加密传输网络数据:加密网站用户与网站间的数据通信,实现传输数据的防劫持、防篡改、防监听,保障数据传输安全。
-
提升网站安全性:规避钓鱼事件发生。网站用户在访问网站时浏览器提示安全可信,可以提升网站的可信度、访问流量和搜索排名。
更多信息,请参见什么是数字证书管理服务。
步骤一:创建Node.js轻量应用服务器
-
登录轻量应用服务器管理控制台。
-
在左侧导航栏,单击服务器。
-
在轻量应用服务器售卖页,完成资源配置。
创建轻量应用服务器的具体操作,请参见创建轻量应用服务器。
其中,您需要在镜像区域,选择应用镜像为Node.js 14.15.2。
步骤二:申请SSL证书
阿里云支持申请免费证书、付费证书或者在其他服务商申请的证书。免费证书建议用于测试、个人试用等场景,org、jp等特殊域名存在无法申请的情况,正式环境建议使用付费正式证书,本步骤以申请免费证书为例介绍。如果您需要申请付费正式证书,请参见购买SSL证书。
购买免费SSL证书
-
登录数字证书管理服务控制台。
-
在左侧导航栏,选择。
-
在个人测试证书(原免费证书)页签,单击立即购买。
-
在立即购买面板,参考下表购买个人测试证书,仔细阅读并勾选服务协议,单击立即购买并完成支付。
配置项
描述
免费版个人测试证书领取示例
产品
-
SSL证书:即正式证书购买入口。详细参数说明,请参见购买SSL证书。
-
个人测试证书:一般用于测试、个人试用场景。
关于正式证书和个人测试证书区别,请参见个人测试证书说明。
个人测试证书
证书类型
-
个人测试证书(免费版):即免费证书,证书签发后有效期3个月。
-
个人测试证书(pro):需支付基础的服务费(68元/张/年)。证书签发后有效期为12个月。
个人测试证书(免费版)
服务
仅个人测试证书(免费版)显示。
保持默认
购买数量
-
个人测试证书(免费版):默认为20。
每个阿里云个人或企业用户(以实名认证为准)每个自然年可以一次性申请20张免费版个人测试证书(每个自然年仅限领取1次)。更多关于免费版本个人测试证书适用场景、领取规则和使用限制说明,请参见个人测试证书说明。
-
个人测试证书(pro):一次性购买证书的最少为1张,最大为100张。
保持默认
其他服务
申请协助和部署服务可以为您解决在使用SSL证书时遇到的各种问题。在申请证书时,协助您梳理申请材料,并主动与CA签发机构进行协调,以确保证书在最短时间内签发。如果您不具备安装或配置证书的能力,专家可为您提供视频远程指导,帮助您快速定位问题,解决您的技术难题。更多信息,请参见购买证书申请协助和部署服务。
-
不需要
-
申请协助服务:工作日服务时间内(9:00~18:00)帮助您快速签发SSL证书。
-
部署服务:工作日服务时间内(9:00~18:00)帮助您部署RSA或ECC算法证书。
-
申请协助+部署服务:证书申请和部署全流程协助,支持非工作日服务时间(9:00~18:00),帮您快速完成证书签发和部署。
不需要
-
提交免费证书申请
-
登录数字证书管理服务控制台。
-
在左侧导航栏,选择。
-
在SSL证书页面,单击个人测试证书(原免费证书)页签。
-
在个人测试证书(原免费证书)页签,单击创建证书。
-
在证书申请面板,配置证书参数,选中快捷签发,单击提交审核。
-
在证书申请面板,按照下表配置证书参数,选中快捷签发,并单击提交审核。
配置项
说明
证书类型
选择个人测试证书(免费版)。
证书剩余数量/总数
表示剩余可申请的证书个数/总共可申请的证书个数。只有当剩余可申请的证书个数不为0时,您才可以创建证书。
域名名称
填写该证书用于保护的网站域名。
申请个人测试证书时,此处只可以填写一个单域名,例如,
aliyundoc.com
。数量
证书数量,默认为1,不支持增加。
快捷签发
域名验证方式
-
如果您当前的阿里云账号与域名的DNS云解析服务所在账号一致,申请证书时,阿里云数字证书管理服务将会自动识别,并默认选择自动DNS验证方式,且不支持修改,提交审核后,系统会自动进行DNS验证。
-
如果您当前的阿里云账号与域名的DNS云解析服务所在账号不一致,您可以选择以下任意一种方式进行域名所有权验证。
-
手动DNS验证:您需要手动修改域名的DNS解析记录,并在证书绑定域名的域名控制台,添加一条解析记录用于域名所有权验证。
-
域名授权自动化验证:您需要手动在对应的DNS域名解析服务商,添加一条CNAME类型的解析记录用于域名所有权验证。添加成功后,后续申请对应域名的SSL证书时可以直接选择该方式,且无需再添加域名解析记录。具体操作,请参见域名所有权验证。
-
文件验证:您需要手动从数字证书管理服务控制台下载一个专用的证书验证文件,然后将该文件上传到站点服务器的指定验证目录。
-
联系人
从下拉列表中选择本次证书申请的联系人(包含邮箱、手机号码等联系信息)。
如果您未创建过联系人,可以单击新建联系人,新建一个联系人。数字证书管理服务会保存新建的联系人信息,方便您下次使用。关于新建联系人的具体配置,请参见管理联系人。
所在地
选择申请人所在城市或地区。
密钥算法
证书使用的密钥算法。
默认选择为RSA,且不支持修改。RSA算法是目前在全球应用广泛的非对称加密算法,兼容性好。
CSR生成方式
CSR(Certificate Signing Request)文件是您的证书请求文件。该文件包含您的SSL证书信息,例如,证书绑定的域名、证书持有主体的名称及地理位置信息等。
您向CA中心提交证书申请时,必须提供CSR。CA中心审核通过您的证书申请后,将使用其根CA私钥为您提供的CSR签名,生成SSL证书公钥(即签发给您的SSL证书)。SSL证书的私钥即您在生成CSR时同时生成的私钥。
您可以选择以下CSR生成方式:
-
系统生成:表示由数字证书管理服务自动使用您在密钥算法指定的加密算法生成CSR文件(您可以在证书签发后下载证书和私钥)。推荐您使用该方式。
-
手动填写:表示您是使用OpenSSL或Keytool等工具手动生成的CSR和私钥文件,并将CSR内容复制粘贴到CSR文件内容(私钥文件由您自行保管)。关于如何制作CSR和私钥文件,请参见如何制作CSR文件。
-
选择已有的CSR:表示从您在数字证书管理服务控制台创建的CSR或上传的CSR中,选择与证书绑定域名相匹配的CSR。
CSR文件内容
只有在CSR生成方式为手动填写或选择已有的CSR时,需要配置该参数。在此处填写您的CSR文件内容。
-
-
按照验证信息中的提示,完成域名所有权的验证。
域名所有权验证成功后,证书通常会在1~2个工作日完成签发,最快10分钟内签发。证书签发后,证书状态将变更为已签发。如果SSL证书长时间未签发,请您检查DNS验证配置是否正确。域名所有权验证更多信息和常见报错,请参见域名所有权验证。
步骤三:配置SSL证书
证书签发后,证书状态将变更为已签发,您需要下载和配置证书。关于证书下载和安装的更多信息,请参见SSL证书安装指南。
-
下载证书。
-
在证书所在行的操作列,单击下载。
-
在证书下载对话框中,根据服务器类型下载证书。
本示例使用Nginx做转发,所以下载Nginx版本。
-
压缩包解压之后会得到2个文件,具体如下图所示。
-
-
使用WinSCP、Xshell等工具上传.key证书文件和.pem证书私钥文件到轻量应用服务器的指定目录,例如:/home。
-
远程连接轻量应用服务器。具体操作,请参见远程连接Linux服务器。
-
执行以下命令,新建https_server_test.js项目文件。
cd /home sudo touch https_server_test.js
-
执行以下命令,修改https_server_test.js文件。
vim https_server_test.js
按i键进入编辑模式,并将以下内容添加至https_server_test.js文件中。内容如下所示:
// 启动https服务需要https包 // 读取文件需要fs包 const https = require('https'); const fs = require('fs'); // 将两个证书文件读取放到options对象中 // 使用readFileSync()方法,顺序地执行读文件和启动服务操作 const options = { key: fs.readFileSync('/home/cert-file-name.key'), cert: fs.readFileSync('/home/cert-file-name.pem') }; // 创建服务器,启动服务器,设置监听端口号 https.createServer(options, (req, res) => { res.end('hello world\n'); }).listen(443);
说明如下:
-
/home/cert-file-name.key:需替换为实际上传私钥文件的绝对路径。
-
/home/cert-file-name.pem:您需要输入实际上传SSL证书文件的绝对路径。
-
-
添加完成后,按
Esc
键退出编辑模式,并输入:wq
后按Enter
键,保存并退出文件。 -
执行以下命令,使SSL证书生效。
sudo node https_server_test.js
-
使用浏览器访问
https://轻量应用服务器对应的域名
。-
如果浏览器地址栏中出现小锁标志,表示证书已经安装成功。
-
如果网站无法通过HTTPS正常访问,需确认您安装证书的轻量应用服务器443端口是否已开启或被其他工具拦截。放行443端口的具体操作,请参见管理防火墙。
-