如果轻量应用服务器已绑定了域名,可以为域名设置HTTPS加密访问,以较低的成本将数据传输协议从HTTP转换成HTTPS,实现网站的身份验证和数据加密传输,防止数据在传输过程中被篡改或信息泄露。本文以部署Node.js环境的轻量应用服务器为例,介绍如何在服务器中安装SSL证书,并开启HTTPS加密访问。

前提条件

  • 已购买域名。具体操作,请参见注册通用域名
  • 如果您的轻量应用服务器部署在中国内地,需要确保域名已备案。更多信息,请参见什么是ICP备案
  • 域名已经绑定到轻量应用服务器并完成域名解析。具体操作,请参见绑定并解析域名

背景信息

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轻量应用服务器

  1. 登录轻量应用服务器管理控制台
  2. 在左侧导航栏,单击服务器列表
  3. 在轻量应用服务器售卖页,完成资源配置。
    创建轻量应用服务器的具体操作,请参见创建轻量应用服务器

    其中,您需要在镜像区域,选择应用镜像为Node.js 14.15.2

    创建完成后,返回服务器列表,您可以查看到Node.js服务器的卡片信息。adad55

步骤二:申请SSL证书

阿里云支持申请免费证书、付费证书或者在其他服务商申请的证书均可。免费证书建议用于测试、个人试用等场景,org、jp等特殊域名存在无法申请的情况,正式环境建议使用付费证书,本步骤以申请免费证书为例。如果您需要申请付费证书,具体操作,请参见购买SSL证书

领取免费证书额度

每个自然年内,您都可以使用已完成实名认证的阿里云账号,通过数字证书管理服务一次性申领20张免费证书。如果一个自然年内20张免费证书的额度已用完,您可以付费购买和免费证书同类型的证书。

  1. 访问免费证书购买页
  2. 选择您需要的购买数量,单击立即购买并完成支付。
    阿里云账号只有在一个自然年内首次购买数量20DV单域名证书(免费试用)时,可以免费领取。

    如果您的阿里云账号在当前自然年内已经领取过20张免费证书,则再次选购DV单域名证书(免费试用)时,需要支付对应的费用。

提交免费证书申请

  1. 登录数字证书管理服务控制台
  2. 在左侧导航栏,单击SSL证书
  3. 免费证书页签下,单击创建证书
    创建证书按钮中的数字表示剩余可申请的免费证书个数/总共可申请的免费证书个数。只有当剩余可申请的免费证书个数不为0时,您才可以创建证书。如果剩余可申请的免费证书个数为0,建议您单击立即购买,获取可用的免费证书个数。免费证书
    成功创建证书后,证书列表中将生成一个免费证书实例。
  4. 在新生成的免费证书实例的操作列,单击证书申请
  5. 证书申请面板,配置申请信息,并单击下一步
    参数说明,具体如下表所示。关于参数的详细说明,请参见免费证书快速上手
    参数 说明
    证书绑定域名 填写网站域名。

    申请免费证书时,此处只可以填写一个单域名,例如,example.com

    域名验证方式 默认选择自动DNS验证
    如果您填写的域名在阿里云域名服务控制台域名列表中,则此处自动匹配自动DNS验证,无需您手动配置。该方式由阿里云自动为您完成域名验证。
    重要 证书绑定的域名需在提交证书申请的阿里云账号下,证书管理服务才能在此处自动匹配自动DNS验证方式。
    联系人 从下拉列表中选择本次证书申请的联系人(包含邮箱、手机号码等联系信息)。
    重要 收到证书申请请求后,CA中心会向联系人邮箱发送证书申请验证邮件或者通过联系人手机号码沟通审核相关事宜。因此,请务必确保联系人信息准确且有效。
    所在地 选择申请人所在城市或地区。
    密钥算法

    默认选择为RSA,且不支持修改。RSA算法是目前在全球应用广泛的非对称加密算法,兼容性好。

    CSR生成方式 选择系统生成
  6. 按照验证信息中的提示,完成域名所有权的验证,并单击验证
    手工DNS验证关于域名所有权验证的更多介绍,请参见域名所有权验证
  7. 单击提交审核,提交证书申请到CA中心进行审核。
  8. 提示对话框,单击确认,然后请耐心等待CA中心审核您的证书申请,并在审核通过后为您签发证书。

    您可以在证书列表中查看证书的状态。证书签发后,证书状态将会变更为已签发

    说明 提交DV证书申请后,CA中心一般会在1~2个工作日内完成审核和签发。

步骤三:配置SSL证书

证书签发后,证书状态将变更为已签发,您需要下载和配置证书。关于证书下载和安装的更多信息,请参见SSL证书安装指南

  1. 下载证书。
    1. 在证书所在行的操作列,单击下载daad455
    2. 证书下载对话框中,根据服务器类型下载证书。
      本示例使用Nginx做转发,所以下载Nginx版本。dasd
    3. 压缩包解压之后会得到2个文件,具体如下图所示。ada
  2. 使用WinSCP等工具上传.key证书文件和.pem证书私钥文件到轻量应用服务器的指定目录,例如:/root
  3. 远程连接轻量应用服务器。
    具体操作,请参见远程连接Linux服务器
  4. 运行以下命令,新建https_server_test.js项目文件。
    cd
    touch https_server_test.js
  5. 运行以下命令,修改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('/root/cert-file-name.key'),
        cert: fs.readFileSync('/root/cert-file-name.pem')
    };
    
    // 创建服务器,启动服务器,设置监听端口号
    https.createServer(options, (req, res) => {
        res.end('hello world\n');
    }).listen(443);
    说明如下:
    • /root/cert-file-name.key:需替换为实际上传私钥文件的绝对路径。
    • /root/cert-file-name.pem:您需要输入实际上传SSL证书文件的绝对路径。
    重要 证书文件的路径需要配置正确,否则证书配置失败,无法使用HTTPS访问。
  6. 添加完成后,按Esc键退出编辑模式,并输入:wq后按Enter键,保存退出文件。
  7. 运行以下命令,激活SSL证书。
    node https_server.js
  8. 使用浏览器访问https://轻量应用服务器对应的域名
    • 如果浏览器地址栏中出现小锁标志,表示证书已经安装成功。sda
    • 如果网站无法通过HTTPS正常访问,需确认您安装证书的轻量应用服务器443端口是否已开启或被其他工具拦截。放行443端口的具体操作,请参见管理防火墙