如果已拥有已通过ICP备案的域名,可以在网站正式上线前免费申请个人测试证书,并部署到Web服务器以启用HTTPS加密访问,用于测试环境的安全验证。
流程概述
在服务器中部署个人测试证书包含以下三个步骤:
前提条件
已在Web服务器开放443端口(HTTPS通信的标准端口)。
如果您使用的是阿里云ECS服务器,请确保已经在安全组规则入方向添加TCP 443端口。具体操作,请参见管理安全组规则。
如果您使用的是其他云服务商或本地服务器,请确保在防火墙或安全组中开启TCP 443端口。
-
拥有域名,且该域名已完成ICP备案。
-
拥有该域名的DNS解析管理权限。
443是HTTPS的默认端口,也可根据实际需求自定义端口号。
步骤一:领取个人测试证书(免费版)
-
登录数字证书管理服务控制台或,在左侧导航栏,选择证书管理 > SSL证书管理 V2.0 。在个人测试证书(原免费证书)页签,单击购买证书。
-
在购买证书页面,填写购买数量,其他配置项保持默认,勾选证书服务服务协议和证书技术支持服务须知,单击立即购买并完成支付。
说明-
如果不满足个人测试证书(免费版)购买规则,请参见购买个人测试证书(pro)。
-
个人测试证书(免费版)领取后不支持取消订单,领取后 3 个月内未使用,将自动退返当年领取额度。
-
步骤二:提交证书申请
-
在个人测试证书(原免费证书)页签,找到目标证书订阅实例,单击操作列下的申请证书。
-
在弹出的证书申请对话框中,填写以下信息,确认无误后单击提交审核。
-
证书绑定域名:输入证书要绑定的域名,示例域名:
www.aliyun.com。 -
CSR生成方式:选择系统生成。
-
所在地:选择申请人所在的省份、城市和地区。
-
联系人:选择本次证书申请的联系人。
-
密钥算法:根据需求选择。密钥长度越长,加密强度越高。RSA_2048 表示 2048 位密钥的 RSA 算法。
-
域名验证方式:推荐选择自动DNS验证。当域名 DNS 与当前阿里云账号不一致时,可选择手动 DNS验证或文件验证方式。三种验证方式对比如下:
验证方式
说明
推荐场景
自动DNS验证
系统自动添加DNS解析记录完成验证。仅当域名所在的云解析DNS服务与当前阿里云账号一致时可选。
推荐使用,操作最为简便。
手动DNS验证
手动前往域名对应的DNS服务商,添加一条CNAME或TXT类型的DNS解析记录。
域名DNS服务与当前阿里云账号不一致时使用。
文件验证
在域名对应的Web应用服务器上创建指定文件来验证域名所有权。
无法操作DNS解析时使用。
-
确认信息无误后,在证书申请对话框中单击提交审核。
-
-
完成域名验证。在个人测试证书(原免费证书)页签,找到目标证书实例,单击操作列下的验证。根据页面提示完成域名所有权验证。
域名所有权验证成功后,证书通常在1~15分钟内完成签发。签发完成后,当前证书状态将变更为已签发。如果证书长时间未签发,请检查DNS验证配置是否正确。
说明-
证书自签发之日起生效,有效期为90天。
-
如果验证长时间未通过,例如文件内容不正确、DNS记录值不匹配或DNS验证超时,可参见域名所有权验证常见问题获取解决方案。
-
步骤三:部署证书到 Web 服务器
下文以CentOS 8.0 64位操作系统、Nginx 1.14.2为例说明。其他操作系统或Web服务器(如Apache、Tomcat、IIS等)的部署操作可能有所不同,详情请参见手工部署证书。
-
下载证书文件。
-
在个人测试证书(原免费证书)页签,找到已签发的证书,单击操作列下的下载。
-
选择与Web服务器类型对应的证书格式(如Nginx),单击操作列下的下载,下载证书文件压缩包。
-
-
上传证书文件到服务器。
-
在Nginx的conf目录下创建一个用于存放证书的目录。
重要本示例中的Nginx配置目录位于
/usr/local/nginx/conf。如不清楚Nginx配置目录,可执行nginx -t查看。#进入Nginx默认配置文件目录。 cd /usr/local/nginx/conf #创建证书目录,命名为cert。 mkdir cert -
将解压后的证书文件上传到Nginx服务器。解压后的证书文件通常包括:
-
证书文件(如:
example.com.pem) -
私钥文件(如:
example.com.key)
说明您可以使用远程登录工具的本地文件上传功能来上传文件。例如PuTTY、Xshell或WinSCP等工具。如果您使用的是阿里云云服务器 ECS,关于上传文件的具体操作,请参见上传或下载文件。
-
-
-
配置Web服务器:编辑Nginx配置文件
nginx.conf,修改与证书相关的配置。重要本示例中的Nginx配置目录位于
/usr/local/nginx/conf。如不清楚nginx.conf的位置,可执行nginx -t查看。-
执行以下命令,打开配置文件。
sudo vim /usr/local/nginx/conf/nginx.conf -
在
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.conf或include指令所引用的文件中均不存在上述代码块所示的server块,请手动添加。 -
删除行首注释符号#,并参考以下示例调整配置。
说明以下示例中已移除不安全的 TLSv1.1 协议(参见 RFC 8996),仅保留 TLSv1.2 和 TLSv1.3。
修改完成后,按
Esc键进入命令模式,输入:wq并按Enter键,保存并退出。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协议对浏览器的兼容性较差。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.2 TLSv1.3; #表示优先使用服务端加密套件。默认开启 ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } } -
执行以下命令,重载配置文件。
#进入Nginx服务的可执行目录。 cd /usr/local/nginx/sbin #重新载入配置文件。 ./nginx -s reload
-
-
验证部署。
证书部署完成后,您可通过访问证书绑定的域名验证该证书是否部署成功。
https://yourdomain #将yourdomain替换为您的实际域名-
如果浏览器地址栏出现
图标,表示证书已安装成功。 -
从Chrome 117版本开始,Chrome浏览器将地址栏HTTPS的
图标改为
图标。单击该图标,参考以下示例,出现
标志时,表示证书已安装成功。弹出的站点信息面板中显示锁图标及连接是安全的字样。
-
常见问题
域名验证长时间未通过怎么办?
-
检查DNS解析记录是否正确添加,确保记录类型(CNAME或TXT)和记录值与控制台提示一致。
-
DNS解析记录添加后需要一定时间才能生效,通常几分钟内生效,最长可能需要等待30分钟。
-
如果选择文件验证,确保验证文件已放置在域名对应服务器的正确路径下,且可通过公网访问。
执行 nginx -s reload 后网站无法正常访问怎么办?
-
执行
nginx -t检查配置文件语法是否正确。 -
检查证书文件路径是否正确,确保
ssl_certificate和ssl_certificate_key指向的文件存在且路径为绝对路径。 -
查看Nginx错误日志(默认路径为
/usr/local/nginx/logs/error.log),根据错误信息进行排查。 -
参考根据浏览器错误提示解决证书部署问题、SSL证书部署故障自助排查指南进行排查。
证书部署后浏览器显示"不安全"怎么办?
-
确认证书状态为已签发,且未过期。
-
确认浏览器访问的域名与证书绑定的域名一致。
-
清除浏览器缓存后重新访问。