更新时间:2024-03-15 GMT+08:00
分享

在Apache服务器上安装国密标准SSL证书

本文以CentOS 7操作系统中的Apache 2.4.46服务器为例介绍国密标准(SM2)SSL证书的安装步骤,您在安装国密标准证书时可以进行参考。证书安装好后,您的Web服务器才能支持SSL通信,实现通信安全。

由于服务器系统版本或服务器环境配置不同,在安装SSL证书过程中使用的命令或修改的配置文件信息可能会略有不同,云证书管理服务提供的安装证书示例,仅供参考,请以您的实际情况为准。

如参考文档安装证书后,HTTPS仍然不生效或遇到其他问题,请单击一对一咨询购买SSL证书配置优化服务,联系专业工程师为您排查具体问题。

前提条件

  • 证书已签发且“证书状态”为“已签发”。
  • 已下载SSL证书,具体操作请参见下载SSL证书

约束条件

  • 证书安装前,务必在安装SSL证书的服务器上开启“443”端口,同时在安全组增加“443”端口,避免安装后仍然无法启用HTTPS。
  • 如果一个域名有多个服务器,则每一个服务器上都要部署。
  • 待安装证书的服务器上需要运行的域名,必须与证书的域名一一对应,即购买的是哪个域名的证书,则用于哪个域名。否则安装部署后,浏览器将提示不安全。
  • 待安装证书为国密标准证书。

操作步骤

在CentOS 7操作系统中的Apache 2.4.46服务器上安装SSL证书的流程如下所示:

①环境配置②获取文件③修改配置文件④重启Apache⑤效果验证

步骤一: 环境配置

  1. 准备gmssl_openssl

    下载页面https://www.gmssl.cn/gmssl/index.jsp中的openssl国密版

    拷贝到/root/目录并解压

    tar xzfm gmssl_openssl_1.1_b2024_x64_1.tar.gz -C /usr/local

    则/usr/local/gmssl为国密版openssl目录

  2. 准备Apache httpd

    安装必要开发包:pcre-devel,expat-devel,apr,apr-util,bison,bison-devel,flex,flex-devel

    下载Apache httpd 2.4.46

    tar zxfm httpd-2.4.46.tar.gz

    cd httpd-2.4.46

    ./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/apr --with-apr-util=/usr/local/apr/util --with-ssl=/usr/local/gmssl LDFLAGS=-lm

    vi build/config_vars.mk

    找到ab_LIBS = -L/usr/local/gmssl/lib -lssl -lcrypto -lrt -lcrypt -lpthread -ldl

    将-L/usr/local/gmssl/lib -lssl -lcrypto替换为/usr/local/gmssl/lib/libssl.a /usr/local/gmssl/lib/libcrypto.a

    然后make install

    则/usr/local/httpd为生成的国密版Apache httpd目录

步骤二:获取文件

安装证书前,需要获取证书文件和密码文件,请根据申请证书时选择的“证书请求文件”生成方式来选择操作步骤:

  • 如果申请证书时,“证书请求文件”选择“系统生成CSR”,具体操作请参见:系统生成CSR
  • 如果申请证书时,“证书请求文件”选择“自己生成CSR”,具体操作请参见:自己生成CSR

具体操作如下:

  • 系统生成CSR
    1. 在本地解压已下载的证书文件。

      下载的文件包含了“Apache”、“Nginx”、2个文件夹和1个“domain.csr”文件,如图本地解压SSL证书所示。

      图1 本地解压SSL证书
    2. 从“证书ID_证书绑定的域名_Apache”文件夹内获得证书文件“证书ID_证书绑定的域名_ca.crt”,“证书ID_证书绑定的域名_server.crt”,私钥文件“证书ID_证书绑定的域名_server.key”,“证书ID_证书绑定的域名_encrypt.crt”和私钥文件“证书ID_证书绑定的域名_ encrypt.key”。
      • 证书ID_证书绑定的域名_ca.crt”文件包括一段中级CA证书代码“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”。
      • 证书ID_证书绑定的域名_server.crt”文件包括一段服务器证书代码“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”。
      • 证书ID_证书绑定的域名_server.key”文件包括一段私钥代码“-----BEGIN EC PRIVATE KEY-----”和“-----END EC PRIVATE KEY-----”。
      • 证书ID_证书绑定的域名_ encrypt.crt”文件包括一段加密证书代码“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”。
      • 证书ID_证书绑定的域名_ encrypt.key”文件包括一段私钥代码“-----BEGIN EC PRIVATE KEY-----”和“-----END EC PRIVATE KEY-----”。
  • 自己生成CSR
    1. 解压已下载的证书压缩包,获得“证书ID_证书绑定的域名_server.pem”文件。

      证书ID_证书绑定的域名_server.pem”文件包括两段证书代码“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”,分别为服务器证书和中级CA证书。

    2. 复制“证书ID_证书绑定的域名_server.pem”文件的第一段证书代码(服务器证书),并另存为“server.crt”文件。
    3. 复制“证书ID_证书绑定的域名_server.pem”文件的第二段证书代码(中级CA),并另存为“ca.crt”文件。
    4. 复制“证书ID_证书绑定的域名_encrypt.pem”文件的证书代码(加密证书),并另存为“encrypt.crt”文件。
    5. 将“ca.crt”、“server.crt”、“encrypt.crt”、“encrypt.key”和生成CSR时的私钥“server.key”放在任意文件夹内。

在/usr/local/httpd/conf目录下创建“cert”目录,并且将“server.key”、“server.crt”、“ca.crt”、“encrypt.key”和encrypt.crt”复制到“cert”目录下。

步骤三:修改配置文件

修改配置文件前,请将配置文件进行备份,并建议先在测试环境中进行部署,配置无误后,再在现网环境进行配置,避免出现配置错误导致服务不能正常启动等问题,影响您的业务。

  1. 打开Apache安装目录下“httpd.conf”文件
  2. vi /usr/local/httpd/conf/httpd.conf
  3. 找到以下两行配置,取消注释
  4. #LoadModule ssl_module modules/mod_ssl.so
  5. #Include conf/extra/httpd-ssl.conf
  6. 打开“httpd-ssl.conf”文件
  7. vi /usr/local/httpd/conf/extra/httpd-ssl.conf
  8. 注释掉所有带SSLSessionCache的配置行
  9. 配置算法SSLCipherSuite HIGH:ECC-SM4-SM3:ECDHE-SM4-SM3
  10. 注释掉默认证书和key
  11. #SSLCertificateFile "/usr/local/httpd/conf/server.crt"
  12. #SSLCertificateKeyFile "/usr/local/httpd/conf/server.key"
  13. 配置国密双证书/私钥
  14. SSLCertificateChainFile "/usr/local/httpd/conf/cert/scsxxxxxx_test.com_ca.crt"
  15. SSLCertificateFile "/usr/local/httpd/conf/cert/scsxxxxxx_test.com_server.crt"
  16. SSLCertificateKeyFile "/usr/local/httpd/conf/cert/ scsxxxxxx _test.com_server.key"
  17. SSLCertificateFile "/usr/local/httpd/conf/cert/ scsxxxxxx _test.com_encrypt.crt"
  18. SSLCertificateKeyFile "/usr/local/httpd/conf/cert/ scsxxxxxx _test.com_encrypt.key"

以上配置仅供参考,证书文件名,证书所在目录等配置请以您的实际情况为准。

  1. 验证配置文件
  2. /usr/local/httpd/bin/httpd -t
  3. 当回显信息如下所示时,则表示配置正确:
  4. Syntax OK

步骤四:重启Apache

执行以下操作重启Apache,使配置生效。

  1. /usr/local/httpd/bin/httpd -k restart

效果验证

部署成功后,可在浏览器的地址栏中输入“https://域名”,按“Enter”。

如果浏览器地址栏显示安全锁标识,则说明证书安装成功。

分享:

    相关文档

    相关产品