在Apache服务器安装RSA和SM2双算法证书

本文将阐述在Linux CentOS操作系统上,如何在Apache服务器上配置Wosign品牌的国密标准SSL证书,具体包括证书文件的下载与上传、在Apache服务上配置证书文件参数,以及安装证书后的结果验证。成功配置国密标准SSL证书后,您将能够通过HTTPS加密通道安全地访问Apache服务。

重要

本文以Linux CentOS操作系统、Apache 2.4.62、Wosign DV国密SSL证书为例。不同版本的操作系统和Web服务器,部署操作可能有所差异,如有问题,请联系产品技术专家进行咨询,详情请参见专家一对一服务

背景信息

国密SSL证书是指根据中国国家密码局制定的密码算法标准所生成的SSL证书,主要用于满足企业对HTTPS协议国产化改造及国密算法应用的合规要求。如果您的Web应用服务器仅部署了国密SSL证书,则只能在支持国密算法的浏览器中访问,如密信浏览器和红莲花浏览器。因此,为了确保与各类浏览器的兼容性,通常会采取SM2/RSA双证书部署方案。

说明

对于已安装的Apache,需要卸载后重新安装。由于官方版Apache+OpenSSL不支持国密算法,因此如果要适配国密算法,需要重新编译Apache,并指定Wosign厂商的国密SM2模块(wotrus_ssl)。

前提条件

  • 已通过数字证书管理服务控制台签发的RSA算法的SSL证书和Wosign品牌的国密SM2证书。具体操作,请参见购买SSL证书(额度)申请证书

  • SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射。您可以通过控制台常用证书工具中的DNS生效验证,检测域名DNS解析是否生效。具体操作,请参见DNS生效验证

  • 如果您的轻量应用服务器部署在中国内地,需要确保域名已备案。更多信息,请参见什么是ICP备案

  • 已在Web服务器开放443端口。

步骤一:下载证书

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

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

  3. SSL证书管理页面,定位到目标证书,在操作列,单击更多,然后选择下载页签。

  4. 服务器类型Apache操作列,单击下载

    image

  5. 解压缩已下载的SSL证书压缩包。

    根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。CSR

    CSR生成方式

    证书压缩包包含的文件

    系统生成选择已有的CSR

    • RSA加密算法证书:<证书ID_证书绑定域名>.pem和<证书ID_证书绑定域名>.key

    • SM2加密算法证书:

      • 签名证书:<证书绑定域名>_sm2_sign.pem和<证书绑定域名>_sm2_sign.key

      • 加密证书:<<证书绑定域名>>_sm2_enc.pem和<<证书绑定域名>>_sm2_enc.key

    手动填写

    • 如果您填写的是通过数字证书管理服务控制台创建的CSR,下载后包含的证书文件与系统生成的一致。

    • 如果您填写的不是通过数字证书管理服务控制台创建的CSR,下载后只包括证书文件(PEM格式),不包含证书密码或私钥文件。您可以通过证书工具,将证书文件和您持有的证书密码或私钥文件转换成所需格式。转换证书格式的具体操作,请参见证书格式转换

步骤二:安装Apache和沃通国密SM2模块

  1. 安装 Apache 之前,请确保系统具备相关的依赖库,如果系统是全新的,请先安装编译工具:

    yum install -y gcc 
    yum install -y gcc-c++
  2. 下载Apache相关依赖包并编译安装。

    说明

    安装目录仅为示例,您可以根据实际需求将其替换。

    1. 安装apr,它提供了跨平台的基础 API 支持,旨在简化开发人员在不同操作系统上的编程工作。主要功能包括文件操作、内存管理、线程控制等基础服务。

      cd /usr/local
      
      #下载apr
      wget https://dlcdn.apache.org/apr/apr-1.7.5.tar.gz
      
      #解压
      tar -zxvf apr-1.7.5.tar.gz
       
      #配置
      sudo ./configure --prefix=/usr/local/apr
      
      #编译、安装
      sudo make && make install
    2. 安装apr-util,它不仅继承了 APR 的跨平台特性,还在此基础上提供了更为丰富的高级功能。主要涵盖数据库访问接口、加密解密功能、消息队列支持。

      #下载apr-util
      wget http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
      
      #解压
      tar -zxvf apr-util-1.5.4.tar.gz
      
      #配置
      sudo ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
      
      #编译、安装
      sudo make && make install
    3. 安装pcre,Perl兼容正则表达式库,支持Unicode字符集和多种匹配模式。用于URL重写、访问控制等。

      #下载 pcre 安装包
      wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
      
      #解压pcre安装包
      tar -zxvf pcre-8.45.tar.gz 
      
      #配置
      sudo ./configure --prefix=/usr/local/pcre
      
      #编译、安装
      sudo make && make install
  3. 下载Wosign国密SM2模块并解压。

    #下载
    wget https://www.wotrus.com/download/wotrus_ssl.tar.gz 
    
    #解压
    tar -zxvf wotrus_ssl.tar.gz
  4. 下载Apache服务器安装包并解压编译。

    #下载
    wget https://dlcdn.apache.org/httpd/httpd-2.4.62.tar.gz
    
    #解压
    tar -zxvf httpd-2.4.62.tar.gz
    
    #进入Apache解压完成之后的目录/usr/local/httpd-2.4.62配置
    sudo ./configure --prefix=/usr/local/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-zlib --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl=/usr/local/wotrus_ssl2.0
    
    #编译、安装
    sudo make && make install
重要

--with-ssl=/usr/local/wotrus_ssl2.0需确保与解压后的Wosign国密SM2模块文件路径一致。

  1. 进入Apache安装bin目录(/usr/local/httpd/bin/),启动Apache。

    #进入Apache安装bin目录
    cd /usr/local/httpd/bin/
    #启动Apache 服务
    apachectl start
  2. 在浏览器中输入网站域名,测试Apache是否启动。若正常启动,如下图:

    image

步骤三:在Apache服务器配置SSL证书

  1. 执行以下命令,在Apache的安装目录下创建用于存放SSL证书的目录。

    #在Apache的配置文件目录下创建一个用于存放国密标准的SSL数字证书的cert目录。
    mkdir /usr/local/httpd/conf/cert
     
    #在Apache的配置文件目录下创建一个用于存放国际标准的SSL数字证书的cn目录。  
    mkdir /usr/local/httpd/conf/cert/cn
  2. 将证书文件上传至对应目录。

    说明

    您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTy、XshellWinSCP等。如果您使用的阿里云云服务器 ECS,上传文件具体操作,请参见上传或下载文件(Windows)上传文件到Linux云服务器

  3. 修改Apache配置文件。

    1. /usr/local/httpd/conf目录下,修改httpd.conf配置文件,添加或修改以下配置文件。

    2. #ServerName www.example.com:80 下增加ServerName 域名:80image

    3. #LoadModule ssl_module modules/mod_ssl.so 下去掉前面的注释符 #image

    4. #Include conf/extra/httpd-ssl.conf 下增加 Include conf/ssl.confimage

    5. /usr/local/httpd/conf 目录下,新建ssl.conf 文件,添加如下配置:

      Listen 443
      <VirtualHost *:443>
      ServerName apache.yourdomain.com
      #apache服务访问网站的文件地址
      DocumentRoot /usr/local/httpd/htdocs
      #启用 SSL 功能
      SSLEngine on
      # 配置国密算法签名证书-SM2 证书 sign
      SSLCertificateFile /usr/local/httpd/conf/cert/apache.yourdomain.com_sm2_sign.pem
      SSLCertificateKeyFile /usr/local/httpd/conf/cert/apache.yourdomain.com_sm2_sign.key
      # 配置国密算法加密证书-SM2 证书 enc
      SSLCertificateFile /usr/local/httpd/conf/cert/apache.yourdomain.com_sm2_enc.pem
      SSLCertificateKeyFile /usr/local/httpd/conf/cert/apache.yourdomain.com_sm2_enc.key
      # 配置国际标准RSA算法证书
      SSLCertificateFile /usr/local/httpd/conf/cert/cn/apache.yourdomain.com_public.crt
      SSLCertificateKeyFile /usr/local/httpd/conf/cert/cn/apache.yourdomain.com.key
      SSLCertificateChainFile /usr/local/httpd/conf/cert/cn/apache.yourdomain.com_chain.crt
      #配置支持的SSL/TLS协议版本
      SSLProtocol all -SSLv2 -SSLv3
      #配置加密套件,写法遵循 openssl 标准。
      SSLCipherSuite ECC-SM4-SM3:ECDH:AESGCM:HIGH:MEDIUM:!RC4:!DH:!MD5:!aNULL:!eNULL
      SSLHonorCipherOrder on
      <Directory "/usr/local/httpd/htdocs" >
      Options -Indexes -FollowSymLinks +ExecCGI
      AllowOverride None
      Order allow,deny
      Allow from all
      Require all granted
      </Directory >
      </VirtualHost
      说明

      以上配置仅供参考,请根据实际环境配置具体的证书目录、证书名称及域名等。

  4. 执行如下命令,重启Apache服务。

    sudo /usr/local/httpd/bin/apachectl restart 

步骤四:验证SSL证书是否配置成功

证书安装完成后,您可通过访问证书的绑定域名验证该证书是否安装成功。

https://yourdomain   #需要将yourdomain替换成证书绑定的域名。
说明
  • 国密SM2算法证书验证需要使用支持国密算法的浏览器(例如密信、红莲花浏览器)测试。

  • 国际RSA算法证书使用Google、Firefox、Edge等浏览器测试。

通过浏览器访问网站时,服务器会根据浏览器对国密算法的支持情况自动切换使用相应的加密方式:

  • 如果浏览器支持国密算法,则服务器会选择国密SM2算法证书进行HTTPS加密通信。

  • 若使用的浏览器不支持国密算法(如大多数国际主流浏览器),则服务器将使用RSA算法证书进行HTTPS加密通信。

相关问题

Apache安装SSL证书后重启时报错