SSL 工具集 / sslops.cn

Apache 服务器安装 SSL 证书(Ubuntu)

您可以通过将 SSL 证书安装到 Apache 服务器,使 Apache 服务器支持 HTTPS 安全访问。本文介绍如何在 Ubuntu 系统的 Apache 服务器上安装 SSL 证书。

说明:

  • 本文档 Apache 版本以 Apache/2.4.58(Ubuntu)为例。
  • 安装前请确认 443 端口未被占用;如果 443 端口已被使用,请在安装证书时绑定其他端口。

获取证书

Apache 部署需要用到证书包中的三个文件:

  • domain_com.crt:证书文件
  • domain_com.key:私钥文件
  • domain_com.ca-bundle:证书链文件

安装 SSL 证书

  1. 将已获取到的 domain_com.crt 证书文件、domain_com.key 私钥文件、domain_com.ca-bundle 证书链文件从本地目录拷贝到 Apache 服务器的 /etc/apache2/ssl 目录下。

说明:

  • 若 /etc/apache2/ssl 目录不存在,可通过 mkdir -p /etc/apache2/ssl 命令创建。
  • 不同版本之间可能存在差异,有些系统的 Apache 目录为 /etc/httpd。
  1. Ubuntu 的 Apache 通过 sites-enabled 目录加载站点配置,需要为 SSL 站点创建软链接:
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
  1. 编辑 /etc/apache2/sites-available/default-ssl.conf 文件,修改如下内容:
<VirtualHost *:443>
    DocumentRoot /var/www/html
    # 启用 SSL 功能
    SSLEngine on
    # 证书文件(与证书链合并后的完整文件)
    SSLCertificateFile      /etc/apache2/ssl/domain_com_full.crt
    # 私钥文件的路径
    SSLCertificateKeyFile   /etc/apache2/ssl/domain_com.key
</VirtualHost>

说明:

  • Apache 2.4.8 起已废弃 SSLCertificateChainFile,推荐先合并证书与证书链,再由 SSLCertificateFile 统一加载:

    cat domain_com.crt domain_com.ca-bundle > /etc/apache2/ssl/domain_com_full.crt
    
  • 若你使用的是更老的 Apache 版本,也可以分别指定 SSLCertificateFile 与 SSLCertificateChainFile。若部署后检测提示"证书链不完整",请优先检查中间证书是否正确加载。

修改后保存配置文件并执行以下命令:

a2enmod ssl              # 启用 ssl 模块,替换证书时可跳过
apache2ctl configtest    # 检查配置文件是否有误
apache2ctl restart       # 重启 Apache 使配置生效

HTTP 自动跳转 HTTPS 的安全配置(可选)

如果您需要将 HTTP 请求自动重定向到 HTTPS,可以通过以下操作设置:

  1. 在命令行中执行 a2enmod rewrite 启用重定向模块。

  2. 打开 HTTP 站点配置文件,例如 /etc/apache2/sites-available/000-default.conf,在配置文件中添加以下内容:

<VirtualHost *:80>
# 新增
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</VirtualHost>
  1. 重新启动 Apache 服务器,即可使用域名访问,实现 HTTP 自动跳转 HTTPS。
相关工具