使用正式证书为Web站点开启HTTPS访问

更新时间:
复制为 MD 格式

个人测试证书是阿里云为个人网站、开发测试或企业用户在建设初期提供的SSL证书,其证书类型及部署场景相对有限。相比之下,正式SSL证书提供多种类型和品牌选择,可满足不同规模网站的需求,无论是电商平台、中小企业、大型集团还是个人站点都能找到合适的证书方案。正式SSL证书还支持通配符证书、多域名证书和混合域名证书,可同时保护多个子域名或多个不同域名。本文将引导您完成正式证书的购买、申请签发和安装部署全流程。

流程概述

在服务器中部署正式SSL证书仅需以下三个步骤:

  1. 步骤一:购买正式SSL证书:获取正式SSL证书资格。

  2. 步骤二:申请SSL证书:填写证书相关信息并提交审核,用于签发最终证书。

  3. 步骤三:部署SSL证书:证书签发后,将其部署到Web服务器或云产品。

前提条件

  • 已完成实名认证。具体操作,请参见个人实名认证企业实名认证

  • 如果待部署SSL证书的网站计划部署在中国内地,则您需要按照工信部的相关要求完成ICP备案,否则将影响网站的正常访问。更多信息,请参见什么是ICP备案

步骤一:购买正式SSL证书

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

  2. 在左侧导航栏,选择证书管理 > SSL证书管理 V2.0

  3. 正式证书页签,单击购买证书

  4. 参考下表完成购买参数配置。

    配置项

    说明

    付费类型

    选择输入域名购买

    域名名称

    输入需要申请证书的域名,如www.example.com。如需绑定多个域名,可在回车后继续输入新的域名。如需绑定二级域名下的所有一级子域名,可输入通配符域名,如*.example.com,即可包含a.example.comb.example.com等,但不包括a.b.example.com。注意,如输入example.com,仅代表绑定example.com域名,不包括该域名下的子域名,例如a.example.com

    证书类型

    选择DV证书(域名型证书),安全性一般,但审核过程简单。

    证书品牌

    选择Rapid品牌,价格较低。不同品牌证书价格不同。

    自动托管

    选择关闭。开启后会在证书签发有效期到期前自动发起证书申请,发起申请时会额外扣费。

    专家人工服务

    选择不需要。技术支持服务可协助您完成证书申请和部署,需额外付费。

    开启域名监控

    选择。域名监控服务提供证书有效期、证书链完整性、域名到期时间及域名可访问性等多维度的安全监控告警,需额外付费。

    说明

    更多正式证书购买配置的详细说明,请参见购买正式证书

  5. 在购买页右侧确认订单信息,选择证书时长为1,即该订单包含1个证书实例1年订阅时长。因 CA/B 行业政策要求,证书的签发有效期可能小于订阅时长,订阅时长内可能需要多次重新签发证书。为避免人工处理不及时,可开启自动托管,协助自动完成证书重签发。

  6. 仔细阅读证书服务相关协议后,单击立即购买并完成支付。

步骤二:申请SSL证书

  1. 购买完成后,返回正式证书页签,在操作列,单击证书申请

  2. 证书申请面板,参考下表配置证书申请参数,完成后单击提交审核

    配置项

    说明

    证书绑定域名

    输入您的网站域名,例如www.example.com。如果购买的是通配符域名,则输入*.example.com

    域名验证方式

    选择用于验证域名持有者身份的方式。

    如果本示例域名example.comDNS解析不在当前账号下(如三方DNS解析或其他阿里云账号),则只能选择手动DNS验证文件验证。提交审核后,您需要按照页面引导完成域名验证,否则证书无法签发。

    如果域名的云解析DNS服务所在账号与当前阿里云账号相同,则系统会自动匹配自动DNS验证方式。提交审核后无需手动操作,系统将自动完成域名验证,您只需等待证书签发即可。

    联系人

    从下拉列表中单击新建联系人新建联系人,或直接选择已有联系人。请确保联系人信息准确有效。

    公司

    选择域名归属的公司信息。

    密钥算法

    选择RSA算法,即SSL证书使用的加密算法。

    RSA算法是目前全球应用最广泛的非对称加密算法,兼容性良好。

    CSR生成方式

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

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

    说明

    更多申请证书的参数限制及配置说明,请参见申请证书

  3. 可选:如果域名所有权验证方式选择了手动DNS验证文件验证,请根据页面引导完成域名验证操作。关于域名所有权验证的更多介绍及操作示例,请参见域名所有权验证

    • 如果选择了自动DNS验证,无需额外操作,等待证书签发即可。DV证书平均签发时长为1~15分钟。

    • 申请证书时选择手动DNS验证方式,需要手动在域名解析服务中添加DNS记录以完成域名所有权验证。添加DNS记录后,等待DNS记录生效(通常几分钟内),系统将自动完成域名所有权验证并签发证书。

      说明

      如果域名DNS解析不在当前阿里云账号下(如使用第三方DNS解析服务或其他阿里云账号),只能选择手动DNS验证方式。添加DNS记录后,系统会自动检测验证结果,无需在控制台手动触发验证。

步骤三:部署SSL证书

部署证书到Web服务器

本文以CentOS 8.0 64位操作系统、Nginx 1.14.2为例进行介绍。不同操作系统或Web服务器的部署操作可能存在差异。关于如何将SSL证书部署到其他Web服务器(如Apache、TomcatIIS等),请参见手工部署证书

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

  2. 在左侧导航栏,选择证书管理 > SSL证书管理 V2.0

  3. 正式证书页签,定位到目标证书,单击操作列的下载

  4. 服务器类型为 Nginx 的操作列,单击下载

  5. 解压缩已下载的SSL证书压缩包。

    根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。

    image

    CSR生成方式

    证书压缩包包含的文件

    系统生成选择已有的CSR

    1. 证书文件(PEM格式):Nginx支持PEM格式的证书文件。PEM格式采用Base64编码,包含完整证书链。解压后,该文件以证书ID_证书绑定域名命名。

    2. 私钥文件(KEY格式):默认以证书绑定域名命名。

    手动填写

    • 如果您填写的是通过数字证书管理服务控制台创建的CSR,下载后包含的证书文件与系统生成的一致。

    • 如果您填写的不是通过数字证书管理服务控制台创建的CSR,下载后只包括证书文件(PEM格式),不包含证书密码或私钥文件。您可以通过证书工具,将证书文件和您持有的证书密码或私钥文件转换成所需格式。转换证书格式的具体操作,请参见证书格式转换

  6. 登录到服务器并进入终端,执行以下命令,在Nginxconf目录下创建用于存放证书的目录。

    #进入Nginx默认配置文件目录。该目录为手动编译安装Nginx时的默认目录,如果您修改过默认安装目录或使用其他方式安装,请根据实际配置调整。
    cd /usr/local/nginx/conf  
    #创建证书目录,命名为cert。
    mkdir cert  
  7. 将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/conf/cert)。

    说明

    您可以使用远程登录工具的本地文件上传功能来上传文件。例如PuTTYXshellWinSCP等工具。如果您使用的是阿里云云服务器 ECS,关于上传文件的具体操作,请参见上传或下载文件

  8. 编辑Nginx配置文件nginx.conf,修改与证书相关的配置。

    1. 执行以下命令,打开配置文件。

      sudo vim /usr/local/nginx/conf/nginx.conf
      说明

      如果不确定nginx.conf的位置,可以执行nginx -t查看配置文件路径。

    2. nginx.conf中定位到HTTPS server配置。

      # HTTPS server
      #
      #server {
      #    listen       443 ssl;
      #    server_name  localhost;
      #    ssl_certificate      cert.pem;
      #    ssl_certificate_key  cert.key;
      #    ssl_session_cache    shared:SSL:1m;
      #    ssl_session_timeout  5m;
      #    ssl_ciphers  HIGH:!aNULL:!MD5;
      #    ssl_prefer_server_ciphers  on;
      #    location / {
      #        root   html;
      #        index  index.html index.htm;
      #    }
      #}
      说明

      如果nginx.confinclude指令引用的文件中不存在上述代码所示的server块,请手动添加。

    3. 删除行首的注释符号#,并参考如下示例进行修改:

      server {
           #HTTPS的默认访问端口443。
           #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
           listen 443 ssl;
           #填写证书绑定的域名
           server_name <YOURDOMAIN>;
           #填写证书文件绝对路径
           ssl_certificate cert/<cert-file-name>.pem;
           #填写证书私钥文件绝对路径
           ssl_certificate_key cert/<cert-file-name>.key;
           ssl_session_cache shared:SSL:1m;
           ssl_session_timeout 5m;
           #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
           #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
           ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
           ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
           #表示优先使用服务端加密套件。默认开启
           ssl_prefer_server_ciphers on;
          location / {
                 root html;
                 index index.html index.htm;
          }
      }
    4. 可选:设置HTTP请求自动跳转到HTTPS。

      如果希望所有HTTP访问自动跳转到HTTPS页面,可通过rewrite指令实现重定向。

      重要

      请在nginx.conf文件中定位到HTTP server的配置代码块,在其中新增以下重定向代码。

      如果找不到上述代码段,可以将以下代码片段放置在nginx.conf文件的server {}代码段之后。配置完成后,nginx.conf文件中将存在两个server {}代码段。

      server {
          listen 80;
          #填写证书绑定的域名
          server_name <YOURDOMAIN>;
          #将所有HTTP请求通过rewrite指令重定向到HTTPS。
          rewrite ^(.*)$ https://$host$1;
          location / {
              index index.html index.htm;
          }
      }

      配置效果如下所示:

      # HTTPS server
      #
      server {
          listen       443 ssl;
          server_name  &lt;your_domain&gt;;
          ssl_certificate      cert/&lt;your_cert&gt;.pem;
          ssl_certificate_key  cert/&lt;your_cert&gt;.key;
          ssl_session_cache    shared:SSL:1m;
          ssl_session_timeout  5m;
          ssl_ciphers  HIGH:!aNULL:!MD5;
          ssl_prefer_server_ciphers  on;
          location / {
              root   html;
              index  index.html index.htm;
          }
      }
      server {
          listen 80;
          server_name &lt;your_domain&gt;;
          rewrite ^(.*)$ https://$host$1;
          location / {
                  index index.html index.htm;
          }
      }
  9. 执行以下命令,重启Nginx服务。

    #进入Nginx服务的可执行目录。
    cd /usr/local/nginx/sbin
    #重新载入配置文件。
    ./nginx -s reload
    说明
    • 如果报错the "ssl" parameter requires ngx_http_ssl_module:需要重新编译Nginx,在编译安装时添加--with-http_ssl_module配置。

    • 如果报错"/cert/3970497_demo.aliyundoc.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_demo.aliyundoc.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file):需要去掉证书相对路径最前面的/。例如,将/cert/cert-file-name.pem改为正确的相对路径cert/cert-file-name.pem

验证部署是否成功

证书部署完成后,您可通过访问证书绑定的域名验证该证书是否部署成功。

https://yourdomain   #将yourdomain替换为您的实际域名
  • 如果浏览器地址栏出现image图标,表示证书已安装成功。

  • Chrome 117版本开始,Chrome浏览器将地址栏中的HTTPS image图标改为了image。请单击该图标,参考如下示例,当出现image标识时,表示证书已安装成功。

    该标识为站点信息弹窗中显示的连接是安全的(前方带锁图标)。

安装SSL证书后如果证书未生效,可参考根据浏览器错误提示解决证书部署问题如需技术支持,可参考购买证书申请协助和部署服务

部署证书到云产品

SSL证书签发成功后,您可以将其部署到Web服务器或阿里云产品中。本文以阿里云内容分发网络CDN为例,介绍如何将证书部署至云产品。如需了解部署到其他云产品或Web服务器的操作,请参见部署SSL证书

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

  2. 在左侧导航栏,选择证书管理 > SSL证书管理

  3. 正式证书页签,定位到已签发的证书,在操作列,单击部署

  4. 选择资源引导页,选择内容分发网络(CDN)和对应资源,单击预览并提交

    系统会自动拉取所有云产品中的资源。如果在对应云产品中未找到目标资源,请在资源总数区域确认资源是否已完成同步。如果资源处于同步中状态(显示为灰色状态),请耐心等待。资源同步时间取决于当前云产品中的资源数量。

  5. 任务预览面板,确认证书实例和云产品资源信息,确认无误后单击提交

    预览页面将显示对应云产品匹配的证书个数和消耗的部署次数。证书匹配个数为0表示证书与所选云产品资源不匹配,会导致部署失败,请仔细核对所选证书。

验证部署是否成功

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,找到目标域名,单击操作列的管理

  4. 在指定域名的左侧导航栏,单击HTTPS配置

  5. 查看已部署SSL证书的信息,包括证书状态和有效期等。如果 HTTPS 证书显示为已开启,说明证书已成功部署。

说明

刚完成证书部署后,可能需要等待一段时间让CDN缓存更新,才能看到最新的证书信息。