跳到主要内容

Apache 部署 SSL


已读 0%
本篇目录
阅读设置
正文字号
18

设置仅保存在当前浏览器。

Apache 部署 SSL

以下以 Apache HTTP Server 2.4 为例。先确认使用发行版软件包还是源码安装,两者的模块管理、配置目录和服务名称不同。

开启 mod_ssl 并加载配置

Debian / Ubuntu 的软件包安装通常使用:

sudo a2enmod ssl

源码安装则检查 httpd.conf 中是否已加载模块,需要时启用对应行,不要重复加载:

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

如果通过 conf.d 目录加载配置,指令应写成:

IncludeOptional conf.d/*.conf

这里的相对路径基于 ServerRoot,并且目录需要真实存在。原文的 includeOptionalconf.d/*.conf 缺少指令与参数之间的空格,不能使用。

准备证书与私钥

将证书放到服务配置引用的路径,例如 /etc/ssl/example/fullchain.pem 与 /etc/ssl/example/privkey.pem。私钥不放在网站公开目录内。

fullchain.pem 应包含站点证书及中间证书,按站点证书在前的顺序排列;私钥是另一个文件。Apache 2.4.8 起可由 SSLCertificateFile 加载中间证书,不需要再使用旧的 SSLCertificateChainFile。证书链文件也不是私钥。

HTTPS 虚拟主机

下面示例需要已有对应目录、文件、访问权限和有效证书。将域名和路径改成实际值,确认全局已监听 443;已有 Listen 443 时不要重复添加。

Listen 443

<VirtualHost *:443>
    ServerName www.example.com
    DocumentRoot "/var/www/example/public"
    SSLEngine on
    SSLProtocol -all +TLSv1.2 +TLSv1.3
    SSLCertificateFile "/etc/ssl/example/fullchain.pem"
    SSLCertificateKeyFile "/etc/ssl/example/privkey.pem"

    <Directory "/var/www/example/public">
        Require all granted
    </Directory>
</VirtualHost>

TLSv1.3 要求 Apache 所链接的 OpenSSL 支持它(OpenSSL 1.1.1 起)。旧环境不能直接套用;先核对实际版本。其他 TLS 参数按所用版本及系统策略配置,不继续复制原文含 RC4 / MEDIUM 的旧套件列表。

一个证书可以覆盖多个域名,但必须在证书的 SAN 中列出或匹配相应域名;不同网站的 SNI 虚拟主机仍应分别配置 ServerName、站点目录及适用证书。

检查后再重载

Debian / Ubuntu:

sudo apache2ctl configtest
sudo apache2ctl -S

仅在检查通过后执行:

sudo systemctl reload apache2

源码安装则使用该安装目录的 apachectl,例如:

sudo /usr/local/httpd/bin/apachectl -t
sudo /usr/local/httpd/bin/apachectl -S

通过后使用同一个安装实例的管理方式重载;不要将源码安装与系统 httpd / apache2 服务混用。随后从客户端验证证书、域名和响应,不能仅凭配置语法通过就认定公网 HTTPS 正常。

HTTP 请求跳转 HTTPS

在已监听 80 的配置中添加对应虚拟主机,使用固定的目标域名:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>

这个写法使用 mod_alias,不依赖 mod_rewrite。站点若通过 HTTP-01 续期证书,还要确认验证路径与证书工具的工作方式兼容。

参考:Apache SSL 入门、mod_ssl 指令。


文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
赏
评论

评论将在接近此处时加载,也可点击立即加载。

  目录