在Apache2服务器上部署SSL证书

Apache2是现有的基于Web服务器,本文详细描述如何在Apache2服务器中部署并使用SSL(Secure Sockets Layer)证书。

前提条件

  • 确保已经获取数字证书。有关获取数字证书方法,可参阅如何获取数字证书
  • SSL加解密软件:Apache服务器自身没有Public Key Infrastructure(PKI)相关库,而是采用第三方API进行,例如:OpenSSL 1.1.0f及以上版本。

    注意:通过运行openssl version -a命令行查看系统中OpenSSL版本号。其中,build on参数日期须晚于2017年5月

    $ openssl version -a
    # 输出结果:
    # LibreSSL 2.2.7  //版本号
    # built on: date not available  //build on 参数
    # platform: <platform name> //平台名字
    

如何部署

安装Apache2

运行apt-get insatall apache2 命令行安装Apache2服务器。

配置Apache2

配置文件路径比较分散,一般如下:

  • 默认的根目录在:/var/www
  • 配置文件在:/etc/apache2/
  • 日志在:/var/log/apache/
  • 启动脚本 /usr/bin/apache2ctl 或者 /etc/init.d/apache2

启用SSL功能

运行$sudo a2enmod ssl命令行加载SSL模块。这条命令行相当于

sudo ln -s/etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled

sudo ln -s/etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled

注意:如果没有a2enmod指令,Apache2服务器无法进行SSL相关的加解密操作,需要运行下列命令行,在apache2.conf中设置SSL模块加载:

LoadModule ssl_module/usr/lib/apache2/modules/mod_ssl.so

SSL相关配置

SSL配置加载完毕后,按照如下步骤对SSL进行相关配置:

  1. 打开ports.conf配置文件:
    路径:/etc/apache2/ports.conf
  2. 在配置文件中添加监听端口:
    Listen 80
    Listen 443
    
  3. 设置site-enabled:
    /etc/apache2/sites-available/目录下有个新生成的default-ssl缺省文件,缺省的网页目录是/var/www/。运行下列命令行,将缺省文件链接到site-enabled目录下:
    ln -s/etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
    
  4. 确认并修改配置文件:
    • 运行下列命令行确认HTTP监听端口设置为80:
      #vi /etc/apache2/sites-enabled/000-default
      NameVirtualHost
      *:80                  #监听80端口
      ServerAdmin
       webmaster@localhost
      
    • 运行下列命令行确认HTTPS监听端口设置为443,并添加证书路径:
      #vi /etc/apache2/sites-enabled/001-ssl
      
      反馈结果如下图所示:
      <VirtualHost *:443>
      SSLEngine	on				  #开启ssl
      SSLProtocol all -SSLv2 –SSLv3 #开启所有协议去掉sslv2、sslv3
      SSLCertificateFile   /xx/xx/domain.cer    #证书路径
      SSLCertificateKeyFile /xx/xx/domain.key  #证书私钥路径
      SSLCertificateChainFile /xx/xx/domain_ca.crt  #证书链路径
      
  5. 运行下方命令行重启Apache2服务器:
    # service httpd restart
    
    # /etc/init.d/apache2 restart
    

更多信息

你已成功完成SSL证书部署。如果要对所部署的网站进行安全监测,参阅MySSL的使用