本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
与手动部署相比,一键部署无需手动配置证书路径,可将证书一键部署至云服务器ECS。如果您购买的是多年期证书,则可以实现云服务器中Web应用证书的完全自动化部署。本文介绍一键部署证书至ECS的限制及流程。
一键部署限制
仅支持以下ECS可信实例规格,不支持轻量应用服务器。
基于x86架构的第七代和第八代ECS实例规格族。
七代:ecs.g7、ecs.g7a、ecs.g7h、cs.c7a、ecs.c7、ecs.r7p、ecs.r7a、ecs.r7、ecs.hfc7、ecs.hfg7、ecs.hfr7。
八代:ecs.g8i、ecs.hfg8i、ecs.hfc8i、ecs.c8i、ecs.hfr8i、ecs.r8i、ecs.g8a、ecs.c8a、ecs.r8a、ecs.g8ae、ecs.c8ae和ecs.r8ae。
Alibaba Cloud Linux3.x和Ubuntu22.04 UEFI镜像。
支持的证书类型:RSA算法的证书。
支持的Web应用服务器:Nginx。不支持自行构建的Nginx,如果ECS实例中已安装不支持一键部署的Nginx,需要您将Nginx降低至支持的版本,或重新安装。
Alibaba Cloud Linux3.x镜像:仅支持通过yum源安装的Nginx,版本要求为1.18.0-2.1.al8 ~ 1.20.1-1.0.5.al8(不包含此版本)。
Ubuntu22.04 UEFI镜像:仅支持通过apt源安装的Nginx。
一个部署任务仅支持将一张证书部署至一个ECS实例,如需部署多个SSL证书,请创建多个部署任务。
前提条件
步骤一:确认ECS云助手状态正常
通过SSL证书控制台为ECS一键安装部署证书,需要确保ECS已正确安装云助手(cloudAssistant),否则无法在控制台实现自动化一键部署SSL证书。查看步骤如下:
访问ECS控制台-云助手。
选择目标资源所在的资源组和地域。
在ECS实例页签下,定位至目标ECS服务器,在云助手状态列查看状态。
说明若未安装或云助手状态异常请参见查看云助手状态及异常状态处理进行处理。
步骤二:在ECS中配置Nginx Web应用服务器
首次部署需要修改Nginx配置文件,后续更新则无需配置。
Alibaba Cloud Linux 3.x镜像
本示例是以Nginx 1.20.1版本为例介绍。/etc/nginx/
是使用yum方式安装Nginx的默认安装目录。如果您手动修改过该目录,请根据实际配置调整。
支持的WebServer及版本:
Nginx:1.18.0-2.1.al8 ~ 1.20.1-1.0.5.al8(不包含此版本)。
重要如果云服务器ECS已安装Nginx,需要您在使用一键部署功能前检查Nginx的安装版本是否支持,否则需要您将Nginx降低至支持的版本,或重新安装。
打开
/etc/nginx/nginx.conf
配置文件,并在pid /run/nginx.pid;
后添加ssl_engine pkcs11;
用于指定使用SSL/TLS加密库。添加内容:
ssl_engine pkcs11;
添加位置及完整示例:
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # 指定使用PKCS#11加密库 ssl_engine pkcs11;
打开
/etc/nginx/nginx.conf
配置文件,取消Settings for a TLS enabled server注释,并添加include "/etc/acm/ssl/nginx-acm.conf";
用于引用SSL密钥配置。添加内容:
include "/etc/acm/ssl/nginx-acm.conf";
添加位置及完整示例:
server { listen 443 ssl http2; listen [::]:443 ssl http2; # 指定主机名或公用NAME(CN) server_name example.com; root /usr/share/nginx/html; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_prefer_server_ciphers on; # 引用SSL密钥配置 include "/etc/acm/ssl/nginx-acm.conf"; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
打开
/usr/lib/systemd/system/nginx.service
文件,添加P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock
和OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf
用于配置与SSL密钥服务的通信。添加内容:
Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf"
添加位置及完整示例:
[Unit] Description=A high performance web server and a reverse proxy server Documentation=man:nginx(8) After=network.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid TimeoutStopSec=5 KillMode=mixed # 配置与SSL密钥服务的通信 Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf" [Install] WantedBy=multi-user.target
说明如果您不清楚Nginx的systemd服务配置文件路径,可执行
sudo find / -name "nginx.service"
查找。
执行以下命令,重载Nginx systemd服务配置。
systemctl daemon-reload
Ubuntu 22.04镜像
本示例是以Nginx 1.18.0版本为例介绍。/etc/nginx/
是使用apt方式安装Nginx的默认安装目录。如果您手动修改过该目录或使用其他方式安装的Nginx,请根据实际配置调整。
打开
/etc/nginx/nginx.conf
配置文件,并在pid /run/nginx.pid;
后添加ssl_engine pkcs11;
用于指定使用SSL/TLS加密库。添加内容:
ssl_engine pkcs11;
添加位置及完整示例:
user www-data; worker_processes auto; pid /run/nginx.pid; # 指定使用PKCS#11加密库 ssl_engine pkcs11; include /etc/nginx/modules-enabled/*.conf;
打开
/etc/nginx/sites-enabled/default
文件,在default文件中新建server块并添加include "/etc/acm/ssl/nginx-acm.conf";
。添加内容:
include "/etc/acm/ssl/nginx-acm.conf";
添加位置及完整示例:
server { listen 443 ssl; # 指定主机名或公用NAME(CN) server_name example.com; root /var/www/html; index index.html index.htm; access_log /var/log/nginx/access_6equj5.log; error_log /var/log/nginx/error_6equj5.log; ssl on; # 引用SSL密钥配置 include "/etc/acm/ssl/nginx-acm.conf"; location / { try_files $uri $uri/ =404; } }
打开
/usr/lib/systemd/system/nginx.service
文件,添加P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock
和OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf
用于配置与SSL密钥服务的通信。说明如果您不清楚Nginx的systemd服务配置文件路径,可执行
sudo find / -name "nginx.service"
查找。添加内容:
Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf"
添加位置及完整示例:
[Unit] Description=A high performance web server and a reverse proxy server Documentation=man:nginx(8) After=network.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid TimeoutStopSec=5 KillMode=mixed # 配置与SSL密钥服务的通信 Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf" [Install] WantedBy=multi-user.target
执行以下命令,重载Nginx systemd服务配置。
systemctl daemon-reload
步骤三:通过证书控制台部署证书
登录数字证书管理服务控制台。
在左侧导航栏,选择。
在云服务器部署页面,单击创建任务,按照以下步骤部署SSL证书。
在基础配置引导页,自定义任务名称,单击下一步。
在选择证书引导页,选择证书类型以及关联云服务器的SSL证书,单击下一步。
每个部署任务仅支持选择一张证书进行部署,如需部署多个证书,请创建多个部署任务。
在选择资源引导页,选择支持一键部署的ECS实例,单击下一步。
系统会自动识别并拉取当前阿里云账号下所有符合条件的ECS实例。如未显示资源,请在左上方资源总数区域单击同步云产品资源。资源同步时间取决于您的当前云产品的资源数,请您耐心等待。
若列表中的实例资源较多,可通过全部类型下拉列表,选择一键部署/手动部署快速筛选支持的实例。
在一键部署页签,确认是否已满足证书部署环境,如确认已满足,请勾选确认以上步骤已经完成,并单击继续部署。
在提示对话框,单击确定。
警告重启Web应用服务器会对业务造成影响,建议您在业务低峰期进行部署。
手动重启Nginx命令参考:
systemctl restart nginx.service
重启后可通过curl命令测试Nginx SSL的链接情况。命令格式为
curl -v https://<证书绑定的域名>
。
步骤四:查看部署任务是否执行成功
在云服务器部署页面,找到您创建的任务,如果任务状态为部署成功,表示已成功将证书上传至云服务器中。
步骤五:查看SSL证书是否生效
部署任务执行成功不代表证书生效,您仍需通过访问域名查看证书的生效情况。
https://yourdomain #需要将yourdomain替换成证书绑定的域名。
如果浏览器的地址栏出现图标,表示证书已经安装成功。Chrome浏览器自117版本开始已将地址栏中的
图标移至
图标中,如下图所示:
常见问题
部署报错“the cloud Assistant not install or run”怎么办?
原因:未安装ECS云助手或 ECS云助手状态异常。
解决方案一:
访问ECS控制台-云助手。
定位至目标服务器,查看云助手状态。
若未安装可单击一键安装自动化安装。
若状态异常请参见云助手异常状态处理查找解决方案。
ECS云助手状态正常后,重新在数字证书控制台创建云服务器部署任务。
解决方案二:
参考在Nginx或Tengine服务器安装 SSL证书(Linux),使用手动安装部署的方式为ECS服务器安装证书。