一键部署支持的Web应用服务器以及配置说明

首次通过部署任务一键部署证书至云服务器ECS前,您需要完成Nginx等目标Web应用服务器(WebServer)的相关配置。

重要

开始本篇配置操作前,请务必确认您已经阅读一键部署证书至阿里云云服务器ECS中的部署限制和前提条件,并完成修改配置文件前的所有操作步骤。

支持的WebServer及版本

目前仅支持Nginx。

  • Alibaba Cloud Linux 3.x镜像中的Nginx版本要求为1.18.0-2.1.al8 ~ 1.20.1-1.0.5.al8(不包含此版本)。如果ECS实例中已安装Nginx,需要您在使用一键部署功能前检查Nginx的安装版本是否支持,否则需要您将Nginx降低至支持的版本,或重新安装。

  • Ubuntu 22.04镜像仅支持从apt源上安装的Nginx版本。

重要

Alibaba Cloud Linux 3.xUbuntu 22.04镜像,均不支持自行构建的Nginx的版本,仅支持使用包管理器安装,如yum、apt。

Alibaba Cloud Linux 3.x镜像

说明

本示例是以Nginx 1.20.1版本为例介绍。/etc/nginx/是使用yum方式安装Nginx的默认安装目录。如果您手动修改过该目录,请根据实际配置调整。

  1. 支持的WebServer及版本:

    Nginx:1.18.0-2.1.al8 ~ 1.20.1-1.0.5.al8(不包含此版本)。

    重要

    如果云服务器ECS已安装Nginx,需要您在使用一键部署功能前检查Nginx的安装版本是否支持,否则需要您将Nginx降低至支持的版本,或重新安装。

  2. 打开/etc/nginx/nginx.conf配置文件,并在pid /run/nginx.pid;后添加ssl_engine pkcs11;用于指定使用SSL/TLS加密库。

    1. 添加内容:

      ssl_engine pkcs11;
    2. 添加位置及完整示例:

      # 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;
      
  3. 打开/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 {
              }
          }
  4. 打开/usr/lib/systemd/system/nginx.service文件,添加P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sockOPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf用于配置与SSL密钥服务的通信。

    1. 添加内容:

      Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock"
      Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf"
    2. 添加位置及完整示例:

      [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
      说明

      如果您不清楚Nginxsystemd服务配置文件路径,可执行sudo find / -name "nginx.service"查找。

  5. 执行以下命令,重载Nginx systemd服务配置。

    systemctl daemon-reload

Ubuntu 22.04镜像

说明

本示例是以Nginx 1.18.0版本为例介绍。/etc/nginx/是使用apt方式安装Nginx的默认安装目录。如果您手动修改过该目录或使用其他方式安装的Nginx,请根据实际配置调整。

  1. 打开/etc/nginx/nginx.conf配置文件,并在pid /run/nginx.pid;后添加ssl_engine pkcs11;用于指定使用SSL/TLS加密库。

    1. 添加内容:

      ssl_engine pkcs11;
    2. 添加位置及完整示例:

      user www-data;
      worker_processes auto;
      pid /run/nginx.pid;
      
      # 指定使用PKCS#11加密库
      ssl_engine pkcs11;
      
      include /etc/nginx/modules-enabled/*.conf;
      
  2. 打开/etc/nginx/sites-enabled/default文件,在default文件中新建server块并添加include "/etc/acm/ssl/nginx-acm.conf";

    1. 添加内容:

      include "/etc/acm/ssl/nginx-acm.conf";
    2. 添加位置及完整示例:

      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;
          }
      }
  3. 打开/usr/lib/systemd/system/nginx.service文件,添加P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sockOPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf用于配置与SSL密钥服务的通信。

    说明

    如果您不清楚Nginxsystemd服务配置文件路径,可执行sudo find / -name "nginx.service"查找。

    1. 添加内容:

      Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock"
      Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf"
    2. 添加位置及完整示例:

      [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
  4. 执行以下命令,重载Nginx systemd服务配置。

    systemctl daemon-reload

相关文档

一键部署证书至阿里云云服务器ECS