WordPress环境上安装SSL证书

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

前提条件

背景信息

通过数字证书管理服务(Certificate Management Service)完成证书购买、申请,并将证书部署到您的Web服务器后,Web服务将会通过HTTPS加密协议来传输数据。HTTPS加密传输协议可激活客户端浏览器到网站服务器之间的SSL加密通道(SSL协议),从而实现高强度单向加密传输,防止传输数据被泄露或篡改。HTTPS加密传输为手机APP、小程序应用、代码程序、控件等上线应用市场或应用生态必备特征。HTTPS加密传输可为网站带来以下优势:

  • 安全合规:满足对应App市场或应用生态的要求。

  • 加密传输网络数据:加密网站用户与网站间的数据通信,实现传输数据的防劫持、防篡改、防监听,保障数据传输安全。

  • 提升网站安全性:规避钓鱼事件发生。网站用户在访问网站时浏览器提示安全可信,可以提升网站的可信度、访问流量和搜索排名。

步骤一:申请SSL证书

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

重要
  • 数字证书管理服务已于2024年06月下旬将SSL免费证书更名为个人测试证书(免费版),将升级证书(有效期12个月)变更为个人测试证书(pro)。免费证书更名通知,请参见【通知】免费证书更名

  • 每个阿里云个人或企业用户(以实名认证为准)每个自然年可以一次性申请20张免费证书(每个自然年仅限领取1次)自然年是每年的01月01日~12月31日,免费领取的证书资源包在每个自然年末将未申请的额度清零(每年12月31日24:00:00),您需要等到第二年的1月1日00:00:00后申请领取当年的免费证书资源包。更多关于免费证书适用场景、领取规则和使用限制说明,请参见个人测试证书说明

购买免费SSL证书

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

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

  3. 个人测试证书(原免费证书)页签,单击立即购买

  4. 立即购买面板,参考下表购买个人测试证书,仔细阅读并勾选服务协议,单击立即购买并完成支付。

    配置项

    描述

    免费版个人测试证书领取示例

    产品

    • SSL证书:即正式证书购买入口。详细参数说明,请参见购买SSL证书

    • 个人测试证书:一般用于测试、个人试用场景。

    关于正式证书和个人测试证书区别,请参见个人测试证书说明

    个人测试证书

    证书类型

    • 个人测试证书(免费版):即免费证书,证书签发后有效期3个月。

    • 个人测试证书(pro):需支付基础的服务费(68元/张/年)。证书签发后有效期为12个月。

    个人测试证书(免费版)

    服务

    个人测试证书(免费版)显示。

    说明

    个人测试证书不保证OCSP(Online Certificate Status Protocol,在线证书状态协议)稳定性。

    保持默认

    购买数量

    • 个人测试证书(免费版):默认为20。

      每个阿里云个人或企业用户(以实名认证为准)每个自然年可以一次性申请20张免费版个人测试证书(每个自然年仅限领取1次)更多关于免费版本个人测试证书适用场景、领取规则和使用限制说明,请参见个人测试证书说明

      说明
      • 自然年是每年的01月01日~12月31日,免费领取的证书资源包在每个自然年末将未申请的额度清零(每年12月31日24:00:00),您需要等到第二年的1月1日00:00:00后申请领取当年的免费版个人测试证书资源包。

      • 如果您在一自然年内已经使用完20张免费版个人测试证书,您可以购买个人测试证书(pro)或HTTPS加速网关,具体操作,请参见个人测试证书升级指南,或直接购买正式证书,具体操作,请参见购买SSL证书

    • 个人测试证书(pro):一次性购买证书的最少为1张,最大为100张。

    保持默认

    其他服务

    申请协助和部署服务可以为您解决在使用SSL证书时遇到的各种问题。在申请证书时,协助您梳理申请材料,并主动与CA签发机构进行协调,以确保证书在最短时间内签发。如果您不具备安装或配置证书的能力,专家可为您提供视频远程指导,帮助您快速定位问题,解决您的技术难题。更多信息,请参见购买证书申请协助和部署服务

    • 不需要

    • 申请协助服务:工作日服务时间内(9:00~18:00)帮助您快速签发SSL证书。

    • 部署服务:工作日服务时间内(9:00~18:00)帮助您部署RSA或ECC算法证书。

    • 申请协助+部署服务:证书申请和部署全流程协助,支持非工作日服务时间(9:00~18:00),帮您快速完成证书签发和部署。

    不需要

提交免费证书申请

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

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

  3. SSL证书页面,单击个人测试证书(原免费证书)页签。

  4. 个人测试证书(原免费证书)页签,单击创建证书

  5. 证书申请面板,配置证书参数,选中快捷签发,单击提交审核

  6. 证书申请面板,按照下表配置证书参数,选中快捷签发,并单击提交审核

    配置项

    说明

    证书类型

    选择个人测试证书(免费版)

    证书剩余数量/总数

    表示剩余可申请的证书个数/总共可申请的证书个数。只有当剩余可申请的证书个数不为0时,您才可以创建证书。

    域名名称

    填写该证书用于保护的网站域名。

    申请个人测试证书时,此处只可以填写一个单域名,例如,aliyundoc.com

    重要
    • 不支持后缀为特殊词的域名申请免费证书。例如.edu.gov.org.jp.pay.bank.live.nuclear.ru等等。正式证书无此限制。如果您需要为后缀为特殊词的域名申请证书,您只能申请正式证书。

    • 不支持为公网IP申请个人测试证书。仅Globalsign、GeoTrust、vTrus、CFCA品牌的OV单域名证书支持绑定IP。具体操作,请参见购买SSL证书

    • 如需一次操作申请多个域名的证书,需购买正式证书。具体操作请参见购买SSL证书

    数量

    证书数量,默认为1,不支持增加。

    快捷签发

    说明

    快捷签发是指在当前步骤填写证书申请资料并提交审核。

    域名验证方式

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

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

      • 手动DNS验证:您需要手动修改域名的DNS解析记录,并在证书绑定域名的域名控制台,添加一条解析记录用于域名所有权验证。

      • 域名授权自动化验证:您需要手动在对应的DNS域名解析服务商,添加一条CNAME类型的解析记录用于域名所有权验证。添加成功后,后续申请对应域名的SSL证书时可以直接选择该方式,且无需再添加域名解析记录。具体操作,请参见域名所有权验证

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

    联系人

    从下拉列表中选择本次证书申请的联系人(包含邮箱、手机号码等联系信息)。

    重要

    收到证书申请请求后,CA中心会向联系人邮箱发送证书申请验证邮件或者通过联系人手机号码沟通审核相关事宜。因此,请务必确保联系人信息准确且有效。

    如果您未创建过联系人,可以单击新建联系人,新建一个联系人。数字证书管理服务会保存新建的联系人信息,方便您下次使用。关于新建联系人的具体配置,请参见管理联系人

    所在地

    选择申请人所在城市或地区。

    密钥算法

    证书使用的密钥算法。

    默认选择为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工具查看,具体操作,请参见查看CSR详情

      • 在制作CSR文件时请务必保存好您的私钥文件。私钥和SSL证书一一对应,一旦私钥丢失,您的SSL证书也将不可使用。阿里云不负责保管您的私钥,如果您的私钥丢失,您必须重新购买SSL证书。

    • 选择已有的CSR:表示从您在数字证书管理服务控制台创建的CSR或上传的CSR中,选择与证书绑定域名相匹配的CSR。

      您必须先使用数字证书管理服务提供的CSR管理工具手动创建CSR或上传已有的CSR,才可以使用该方式。具体操作,请参见创建CSR上传CSR

      重要

      您选择的CSR使用的加密算法需要和您在密钥算法中设置的算法相同,否则您将无法顺利提交证书审核。如果您不清楚CSR使用的加密算法或域名,您可以通过查看CSR工具查看,具体操作,请参见查看CSR详情

    CSR文件内容

    只有在CSR生成方式手动填写选择已有的CSR时,需要配置该参数。在此处填写您的CSR文件内容。

  7. 按照验证信息中的提示,完成域名所有权的验证。

    域名所有权验证成功后,证书通常会在1~2个工作日完成签发,最快10分钟内签发。证书签发后,证书状态将变更为已签发。如果SSL证书长时间未签发,请您检查DNS验证配置是否正确。域名所有权验证更多信息和常见报错,请参见域名所有权验证

    说明

    如果您未选中快捷签发,创建证书申请后,您将获得一个证书(对应要申请的证书)。您需要在该证书操作列,单击证书申请,填写证书申请信息并提交审核后,再按照该步骤进行验证。

步骤二:配置SSL证书

证书签发后,证书状态将变更为已签发,您需要部署SSL证书至服务器并配置证书。关于证书部署和安装的更多信息,请参见SSL证书安装指南

  1. 上传部署SSL证书。

    1. 在左侧导航栏,选择部署和资源管理 > 云服务器部署

    2. 云服务器部署页面,单击创建任务,按照以下步骤部署SSL证书。

      1. 基础配置引导页,自定义任务名称,单击下一步

      2. 选择证书引导页,选择证书类型以及关联云服务器的SSL证书,单击下一步

      3. 选择资源引导页,选择对应的云服务器和资源,单击下一步

        image

        • 系统会自动识别并拉取当前阿里云账号下所有符合条件的云服务器实例资源(即云服务器部署了Web应用)。如果仍未显示对应资源,请检查云服务器是否部署了Web应用,例如Nginx,Apache等。

        • 若某个实例之前部署过证书,系统会显示已部署证书的名称。

      4. 部署配置引导页,参考下表部署证书至云服务器,单击确定

        重要

        如果服务器中不存在对应的证书配置目录,系统将会自动进行创建。控制台配置的路径应当与云服务器Web应用中配置的证书相关文件的路径保持一致。

        配置项

        描述

        配置示例

        证书路径

        设置证书文件存放在云服务器中的绝对路径。

        /usr/local/nginx/conf/ssl/cert.pem

        私钥路径

        设置证书私钥文件存放在云服务器中的绝对路径。

        /usr/local/nginx/conf/ssl/cert.key

        证书链路径

        设置证书链文件存放在云服务器中的绝对路径。

        无需配置。

        重启命令

        在部署证书后,需要重启云服务器中的Web应用或重新加载Web应用配置文件,以使证书生效。因此,您可以设置Web应用的重启或重新加载配置文件命令。

        重要

        执行相关命令时,可能会出现服务启动失败的情况。如果服务启动失败,请前往对应的云服务器进行操作。

        无需配置。

      5. 在提示对话框,单击确定

  2. 配置SSL证书。

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

    2. 执行以下命令,修改WordPress配置文件wordpress.conf。

      说明

      本示例WordPress环境中默认安装的是Nginx,不同环境的配置文件路径和名称可能不一样,请您以实际环境为准。

      sudo vim /usr/local/nginx/conf/vhost/wordpress.conf
    3. i键,进入编辑模式。

    4. 在配置文件server{}代码段中配置证书路径。

      修改后的配置文件示例如下所示:

      server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        #配置SSL证书路径。证书路径需与部署证书时设置一致。
        ssl_certificate /usr/local/nginx/conf/ssl/cert.pem;
        ssl_certificate_key /usr/local/nginx/conf/ssl/cert.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 10m;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_buffer_size 1400;
        add_header Strict-Transport-Security max-age=15768000;
        ssl_stapling on;
        ssl_stapling_verify on;
        server_name _;
        access_log /data/wwwlogs/wordpress_nginx.log combined;
        index index.html index.htm index.php;
        root /data/wwwroot/wordpress;
        #if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
        #if ($host != www.example.com) {  return 301 $scheme://www.example.com$request_uri;  }
        include /usr/local/nginx/conf/rewrite/wordpress.conf;
        #error_page 404 /404.html;
        #error_page 502 /502.html;
      
        location ~ [^/]\.php(/|$) {
          #fastcgi_pass remote_php_ip:9000;
          fastcgi_pass unix:/dev/shm/php-cgi.sock;
          fastcgi_index index.php;
          include fastcgi.conf;
        }
      
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
          expires 30d;
          access_log off;
        }
        location ~ .*\.(js|css)?$ {
          expires 7d;
          access_log off;
        }
        location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) {
          deny all;
        }
      }
    5. 修改完成后,按Esc键,输入:wq!并按Enter键,保存修改后的配置文件并退出编辑模式。

    6. 执行以下命令,重启Nginx服务。

      sudo systemctl reload nginx
    7. 运行以下命令,重启数据库。

      sudo service mysqld restart

步骤三:验证SSL证书是否安装成功

  1. 在WordPress后台管理页面配置HTTPS域名。

    1. 登录WordPress后台管理页面。

      后台管理页面地址、用户名、密码的获取方式具体操作,请参见步骤二:配置应用

    2. 在左侧导航栏中,选择设置 > 常规

    3. WordPress地址(URL)站点地址(URL)后,输入您已绑定并解析的域名,本文以https://example.com为例。adasd

    4. 单击保存更改

      说明

      修改WordPress地址(URL)站点地址(URL)后,则管理员登录地址变为https://example.com/wp-login.phpexample.com需要替换为您的实际域名。

  2. 使用浏览器访问https://轻量应用服务器对应的域名

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

    • 如果网站无法通过HTTPS正常访问,您可以通过以下方法排查。

      • 需确认您安装SSL证书的轻量应用服务器443端口是否已开启或被其他工具拦截。放行443端口的具体操作,请参见管理防火墙

      • 域名是否备案。如果域名解析至中国内地服务器的网站,需要确保域名已备案。更多信息,请参见什么是ICP备案

      • 证书路径配置是否正确。需确保证书上传的路径和配置的路径相同。具体操作,请参见配置SSL证书

相关文档

不同类型的服务器支持配置的SSL证书格式不同,您可以根据服务器的类型选择安装对应的SSL证书。具体操作,请参见SSL证书安装指南