
# 在Apache服务器上安装国密标准SSL证书
本文以CentOS 7操作系统中的Apache 2.4.46服务器为例介绍国密标准（SM2）SSL证书的安装步骤，您在安装国密标准证书时可以进行参考。证书安装好后，您的web服务器才能支持SSL通信，实现通信安全。
![](https://support.huaweicloud.com/usermanual-ccm/public_sys-resources/note_3.0-zh-cn.png)
由于服务器系统版本或服务器环境配置不同，在安装SSL证书过程中使用的命令或修改的配置文件信息可能会略有不同，云证书与管理服务提供的安装证书示例，仅供参考，请以您的实际情况为准。
如参考文档安装证书后，HTTPS仍然不生效或遇到其他问题，请单击[一对一咨询](https://marketplace.huaweicloud.com/contents/917d16b0-33c4-49d3-bfe9-dd9219ea084e#productid=00301-120142-0--0)购买SSL证书配置优化服务，联系专业工程师为您排查具体问题。
#### 前提条件
- 证书已签发且"证书状态"为"已签发"。
- 已下载SSL证书，具体操作请参见[下载SSL证书](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0391.html)。
- 若域名解析指向的服务器位于中国内地则需进行ICP[备案](https://support.huaweicloud.com/qs-domain/domain_qs_280000.html)，否则将导致网站无法访问。
 
#### 约束条件
- 证书安装前，务必在安装SSL证书的服务器上开启"443"端口，同时在安全组增加"443"端口，避免安装后仍然无法启用HTTPS。
- 如果一个域名有多个服务器，则每一个服务器上都要部署。
- 待安装证书的服务器上需要运行的域名，必须与证书的域名一一对应，即购买的是哪个域名的证书，则用于哪个域名。否则安装部署后，浏览器将提示不安全。如需增加或修改域名，请参见[如何增加、解绑、替换或修改SSL证书域名？](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0115.html)
- 待安装证书为国密标准证书。
 
#### 操作步骤
在CentOS 7操作系统中的Apache 2.4.46服务器上安装SSL证书的流程如下所示：
[①环境配置] → [②获取文件] → [③修改配置文件] → [④重启Apache] → [⑤效果验证]
 #### 步骤一： 环境配置
1. 准备gmssl_openssl 访问[GMSSL](https://www.gmssl.cn/gmssl/index.jsp)页面，在左侧导航树中选择"国密web服务器"，单击"国密web服务器下载"页签，下载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
   1. 下载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
      ```
      
   
   2. 找到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**
      
   
   3. **make install**
      则/usr/local/httpd为生成的国密版Apache httpd目录
      
    
 
 #### 步骤二：获取文件
安装证书前，需要获取证书文件和密码文件，请根据申请证书时选择的"证书请求文件"生成方式来选择操作步骤：
- 如果申请证书时，"证书请求文件"选择"系统生成CSR"，具体操作请参见：[系统生成CSR]。
- 如果申请证书时，"证书请求文件"选择"自己生成CSR"，具体操作请参见：[自己生成CSR]。
具体操作如下：
- **系统生成CSR**
  1. 在本地解压已下载的证书文件。 下载的文件包含了"Apache"、"Nginx"、"Pem"3个文件夹和1个"domain.csr"文件，如图[本地解压SSL证书]所示。
     图1本地解压SSL证书   
     ![](https://support.huaweicloud.com/usermanual-ccm/zh-cn_image_0000002522583216.png "点击放大") 
  
  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"文件
   ```
   vi /usr/local/httpd/conf/httpd.conf
   ```
   
2. 找到以下两行配置，取消注释
   ```
   #LoadModule ssl_module modules/mod_ssl.so
   #Include conf/extra/httpd-ssl.conf
   ```
   
3. 打开"httpd-ssl.conf"文件
   ```
   vi /usr/local/httpd/conf/extra/httpd-ssl.conf
   ```
   
4. 注释掉所有带SSLSessionCache的配置行
5. 配置算法SSLCipherSuite HIGH:ECC-SM4-SM3:ECDHE-SM4-SM3
6. 注释掉默认证书和key
   ```
   #SSLCertificateFile "/usr/local/httpd/conf/server.crt"
   #SSLCertificateKeyFile "/usr/local/httpd/conf/server.key"
   ```
   
7. 配置国密双证书/私钥
   ```
   SSLCertificateChainFile "/usr/local/httpd/conf/cert/scsxxxxxx_test.com_ca.crt"
   SSLCertificateFile "/usr/local/httpd/conf/cert/scsxxxxxx_test.com_server.crt"
   SSLCertificateKeyFile "/usr/local/httpd/conf/cert/ scsxxxxxx _test.com_server.key"
   SSLCertificateFile "/usr/local/httpd/conf/cert/ scsxxxxxx _test.com_encrypt.crt"
   SSLCertificateKeyFile "/usr/local/httpd/conf/cert/ scsxxxxxx _test.com_encrypt.key"
   ```
   
![](https://support.huaweicloud.com/usermanual-ccm/public_sys-resources/note_3.0-zh-cn.png)
以上配置仅供参考，证书文件名，证书所在目录等配置请以您的实际情况为准。
1. 验证配置文件 **/usr/local/httpd/bin/httpd -t**
   
2. 当回显信息如下所示时，则表示配置正确： **Syntax OK**
   
 
 #### 步骤四：重启Apache
执行以下操作重启Apache，使配置生效。
**/usr/local/httpd/bin/httpd -k restart**
 #### 效果验证
部署成功后，可在浏览器的地址栏中输入"https://域名"，按"Enter"。
如果浏览器地址栏显示安全锁标识，则说明证书安装成功。
![](https://support.huaweicloud.com/usermanual-ccm/zh-cn_image_0000002631362860.png)
- 如果网站仍然出现不安全提示，请参见[为什么部署了SSL证书后，网站仍然出现不安全提示？](https://support.huaweicloud.com/ccm_faq/ccm_01_0098.html)进行处理。
- 如果通过域名访问网站时，无法打开网站，请参见[为什么部署了SSL证书后，通过域名访问网站时，无法打开网站？](https://support.huaweicloud.com/ccm_faq/ccm_01_0099.html)进行处理。
- 如果仍未解决或出现其他问题，华为云商店提供SSL证书配置优化服务，专业工程师一对一服务，请直接单击[一对一咨询](https://marketplace.huaweicloud.com/contents/917d16b0-33c4-49d3-bfe9-dd9219ea084e#productid=00301-120142-0--0)进行购买，购买服务后，联系工程师进行处理。
 
#### 常见问题
[服务器IP地址变更后，原SSL证书是否仍可用？](https://support.huaweicloud.com/ccm_faq/ccm_01_0043.html)
[SSL证书支持在哪些地域部署？](https://support.huaweicloud.com/ccm_faq/ccm_01_0210.html)
[宝塔搭建的网站如何在后台添加SSL证书？](https://support.huaweicloud.com/ccm_faq/ccm_01_0211.html)
[SSL证书安装配置或使用中的相关问题，该如何解决？](https://support.huaweicloud.com/ccm_faq/ccm_01_0182.html)
[SSL证书的安装和配置提供咨询服务吗？](https://support.huaweicloud.com/ccm_faq/ccm_01_0068.html)
