在安装国密算法证书时,为了不同浏览器的自适应性,通常结合RSA算法证书一同安装。本文介绍如何在Tengine服务器安装RSA和SM2(国密算法)双算法证书。

前提条件

  • 已经通过数字证书管理服务控制台签发证书,详情请参见购买SSL证书

    本文以Wosign品牌的DV证书为例介绍,您可以根据实际需要选择购买其他品牌的证书。如需了解不同品牌证书支持的加密算法,请参见支持的加密算法

  • 已准备好Linux服务器。
  • 已准备好远程登录工具(例如PuTTY、Xshell),用于登录您的服务器。

步骤一:配置BabaSSL和Tengine

在准备好的Linux服务器中安装使用的软件包,并完成BabaSSL和Tengine的配置。

  1. 在Linux服务器上执行以下命令安装需要使用的软件包。
    yum -y install wget 
    yum -y install git
    yum -y install gcc  gcc-c++
    yum -y install make
    yum -y install pcre  pcre-devel
    yum -y install gzip
    yum -y install zlib-devel
  2. 在服务器上执行以下命令,下载BabaSSL和Tengine。
    cd /opt   #您可以在此处自定义BabaSSL和Tengine的安装目录。
    wget -c  https://github.com/BabaSSL/BabaSSL/archive/refs/tags/8.2.1.tar.gz
    git clone https://github.com/alibaba/tengine.git
  3. 在服务器上执行以下命令,编译安装BabaSSL和Tengine。
    tar -zxvf 8.2.1.tar.gz  #解压BabaSSL压缩包
    cd tengine
    ./configure --prefix=/usr/local/tengine  \
    --add-module=modules/ngx_openssl_ntls  \
    --with-openssl=../BabaSSL-8.2.1   \
    --with-openssl-opt="enable-ntls"  \
    --with-http_ssl_module   \
    --with-stream - \
     -with-stream_ssl_module --with-stream_sni
    make -j1
    make install

步骤二:下载证书到本地

请您按照如下步骤,下载RSA加密算法证书和SM2加密算法证书。

  1. 登录数字证书管理服务控制台
  2. 在左侧导航栏,单击SSL证书
  3. 证书管理页签,定位到目标证书,在操作列单击下载
  4. 证书下载面板,单击Nginx服务器操作列的下载
    该操作会将Nginx服务器证书压缩包下载到本地,并保存在浏览器的默认下载位置。
  5. 解压已下载的Nginx服务器证书压缩包文件。
    本示例解压后的文件如下:
    • RSA加密算法证书:server_rsa.pem和server_rsa.key
    • SM2加密算法证书:
      • 签名证书:server_sign.pem和server_sign.key
      • 加密证书:server_enc.pem和server_enc.key

步骤三:在Tengine服务器安装证书

  1. 登录Tengine服务器。
  2. 执行以下命令创建证书存放目录。
    cd /usr/local/tengine/conf #证书默认安装目录,您可以根据实际配置调整。
    mkdir cert #创建证书目录,命名为cert。
  3. 使用远程登录工具附带的本地文件上传功能,将证书相关文件上传到Tengine服务器的证书目录(示例中为/usr/local/tengine/conf)。
    说明 如果您在申请证书时将 CSR生成方式设置为 手动填写,请将您手动创建的证书私钥文件上传至 /usr/local/nginx/conf/cert目录下。
  4. 编辑Tengine配置文件nginx.conf,修改与证书相关的配置。配置内容如下:
    # HTTPS server
    
    server {
        listen 443 ssl;
        server_name ssl.certqa.cn;
         
        # 启用NTLS。Tengine针对BabaSSL中的NTLS功能进行了适配,本文使用BabaSSL作为Tengine的底层密码库来实现通信加密的能力。
        enable_ntls on;
    
        # 配置RSA算法证书
        ssl_sign_certificate cert / server_rsa.pem;
        ssl_sign_certificate_key cert / server_rsa.key;
    
        # 配置国密算法签名证书 
        ssl_enc_certificate cert / server_sign.pem;
        ssl_enc_certificate_key cert / server_sign.key;
    
        # 配置国密算法加密证书 
        ssl_certificate cert / server_enc.pem;
        ssl_certificate_key cert / server_enc.key;    
    
        ssl_session_cache shared: SSL: 1 m;
        ssl_session_timeout 5 m;
    
        # 配置加密套件# ssl_ciphers HIGH: !aNULL: !MD5;
        ssl_ciphers ECDHE - RSA - AES128 - GCM - SHA256: AES128 - SHA: DES - CBC3 - SHA: ECC - SM4 - CBC - SM3: ECDHE - SM4 - GCM - SM3: ECC - SM4 - SM3;
        ssl_prefer_server_ciphers on;
    
        location / {
            root html; #Web网站程序存放目录。
            index index.html index.htm;
        }
    }
    
    }
  5. 执行如下命令,重启Tengine服务。
    cd /usr/local/tengine/bin #进入Tengine服务的可执行目录。
    ./nginx -s reload  #重新载入配置文件。

步骤四:验证安装是否成功

证书安装完成后,您可通过访问证书的绑定域名验证该证书是否安装成功。
https://yourdomain   #需要将yourdomain替换成证书绑定的域名。
  • 国密算法证书验证需要使用国密浏览器(例如密信浏览器)测试。证书安装成功效果如下:国密算法
  • RSA加密算法证书使用Google、Firefox、Edge、360等浏览器测试。证书安装成功效果如下:RSA加密算法