全部产品
Search
文档中心

轻量应用服务器:Node.js环境安装SSL证书

更新时间:Apr 03, 2024

如果轻量应用服务器已绑定了域名,可以为域名设置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 16.5.0

步骤二:购买SSL证书

购买证书

  1. 访问证书服务购买页

  2. 根据您的实际需求选择要购买的证书实例的规格。

    参数

    说明

    示例

    证书类型

    选择SSL证书要绑定的域名类型规格:

    • 单域名:SSL证书用于绑定一个单域名,例如,aliyundoc.com,默认赠送www.aliyundoc.com。

    • 通配符域名:如果您拥有多个同级别子域名服务器,使用通配符域名证书时,仅需购买并安装一张证书,无需为每个子域名单独购买和安装证书。

      通配符域名匹配规则如下:

      • 只能匹配同级别的子域名,不能跨级匹配。例如,*.aliyundoc.com的域名证书匹配demo.aliyundoc.com、learn.aliyundoc.com等子域名,但是不匹配guide.demo.aliyundoc.com、developer.demo.aliyundoc.com等域名。

      • 如果通配符域名证书的主域名为一级域名,默认赠送主域名。例如,您申请的通配符域名证书为*.aliyundoc.com,则默认赠送主域名aliyundoc.com;您如果申请的通配符域名为*.demo.aliyundoc.com,则不会赠送demo.aliyundoc.com或aliyundoc.com。

      • 仅支持申请单个通配符域名的证书,不支持申请多通配符域名的证书。如需一张证书包含多个通配符域名,您可以通过合并多个相同品牌、类型的证书,生成多通配符证书。具体操作,请参见证书合并申请

    • 多域名:SSL证书用于同时绑定多个单域名,最多支持绑定5个单域名。

    单域名

    品牌

    选择您需要的证书品牌(即签发证书的CA中心)。

    关于不同证书品牌的介绍,请参见SSL证书选购指引

    Digicert

    证书规格

    选择您需要的证书类型。

    关于不同证书类型的介绍,请参见SSL证书选购指引

    DV SSL

    域名数量

    仅当选择多域名时,需要设置该参数。选择SSL证书要绑定的单域名的个数。

    1

    数量

    购买SSL证书的数量。默认为1,不支持增加购买数量。如需购买多张SSL证书,可通过选择服务年限,例如选择服务年限2年,表示购买2张有效期为1年的SSL证书。

    1

    服务年限

    选择SSL证书服务的时长。可选项:

    • 1年:购买服务时长为1年的SSL证书。证书有效期默认是1年,证书过期后您需要手动重新下单购买SSL证书。

    • 2年:购买实际服务时长为2年的SSL证书,包含2张1年有效期的SSL证书和1次托管服务。

      关于托管服务的更多介绍,请参见托管服务概述

    • 3年:购买实际服务时长为3年的SSL证书,包含3张1年有效期的SSL证书和2次托管服务。

    1年

  3. 单击立即购买,并完成支付。

提交证书申请

  1. 登录数字证书管理服务控制台

  2. 在左侧导航栏,单击SSL 证书

  3. 证书管理页签下,在目标证书的操作列,单击证书申请

  4. 证书申请面板,完成配置并勾选快捷签发,单击提交审核

    配置项

    说明及示例

    证书类型

    单域名

    证书规格

    digicert DV

    域名名称

    证书绑定的域名,即轻量应用服务器绑定的域名。例如,aliyundoc.com

    年限

    1

    快捷签发

    域名验证方式

    • 如果您当前的阿里云账号与域名的DNS云解析服务所在账号一致,申请SSL证书时,阿里云数字证书管理服务将会自动识别,并默认选择自动DNS验证方式,且不支持修改,提交审核后,系统会自动进行DNS验证,您仅需等待证书签发即可。

    • 如果您当前的阿里云账号与域名的DNS云解析服务所在账号不一致,您可以选择以下任意一种方式进行域名所有权验证。

      • 手工DNS验证:您需要手动在对应的DNS域名解析服务商,添加一条TXT类型的解析记录用于域名所有权验证。

      • 文件验证:您需要手动从数字证书管理服务控制台下载一个专用的验证文件,然后将该文件上传到站点服务器的指定验证目录。

    联系人

    在下拉列表中,单击新建联系人,新建本次证书申请的联系人。如果已创建过联系人,可以直接选择已有的联系人。

    请您务必确保联系人信息准确且有效。

    所在地

    选择您所在的城市或地区。

    密钥算法

    SSL证书使用的密钥算法。默认选择为RSA,且不支持修改。RSA算法是目前全球广泛应用的非对称加密算法,具有良好的兼容性。

    CSR生成方式

    CSR(Certificate Signing Request)文件是SSL证书的请求文件,包含服务器信息和单位信息,需要提交给CA中心审核。

    您选择系统生成即可,表示由数字证书管理服务自动使用您在密钥算法指定的加密算法生成CSR文件。

  5. 如果域名验证方式自动DNS验证,系统会自动完成DNS验证,您仅需等待证书签发即可;如果域名验证方式选择手动DNS验证文件验证,您需要按照验证信息中的提示,完成域名所有权的验证。更多信息和常见报错,请参见域名所有权验证

    提交免费SSL证书申请后,CA中心一般会在30分钟左右完成审核和签发,请您耐心等待。SSL证书签发后,SSL证书状态将变更为已签发

步骤三:配置SSL证书

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

  1. 下载证书。

    1. SSL证书页面证书管理页签下,定位到要下载的证书,单击操作列下的下载

    2. 证书下载对话框中,根据服务器类型下载证书。

      本示例使用Nginx做转发,所以下载Nginx版本。

      警告

      下载证书后,请妥善保存,避免证书泄露导致您的网站被攻击。

      image

    3. 压缩包解压之后会得到2个文件,具体如下图所示。

      image

  2. 使用WinSCP、Xshell等工具上传.key证书文件和.pem证书私钥文件到轻量应用服务器的指定目录,例如:/home。

  3. 远程连接轻量应用服务器。具体操作,请参见远程连接Linux服务器

  4. 执行以下命令,新建https_server_test.js项目文件。

    cd /home
    sudo 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('/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证书文件的绝对路径。

    重要

    证书文件的路径需要配置正确,否则证书配置失败,无法使用HTTPS访问。

  6. 添加完成后,按Esc键退出编辑模式,并输入:wq后按Enter键,保存并退出文件。

  7. 执行以下命令,使SSL证书生效。

    sudo node https_server_test.js
  8. 使用浏览器访问https://轻量应用服务器对应的域名

    • 如果浏览器地址栏中出现小锁标志,表示证书已经安装成功。sda

    • 如果网站无法通过HTTPS正常访问,需确认您安装证书的轻量应用服务器443端口是否已开启或被其他工具拦截。放行443端口的具体操作,请参见管理防火墙