Linux 技术手札

RHEL / CentOS 7 安装 Apache mod_ssl

以下会记录在 RHEL 及 CentOS 7 安装及设定 Apache mod_ssl 的的方法, 以下假设已经使用 YUM 安装好 Apache, 并会示范安装自签凭证及 CA 发行感证的步骤。

首先用 YUM 安装 mod_ssl:

# yum install mod_ssl

安装好 mod_ssl 后, 系统会自动建立 Apache 的 ssl 设定档, 位置在 /etc/httpd/conf.d/ssl.conf, 但在修改 ssl.conf 前, 先建立好储存凭证的目录, 及产生凭证:

建立储存凭证的目录, 以下设定在 /etc/httpd/ssl

# mkdir /etc/httpd/ssl

然后用 openssl 建立 priviate key 及 凭证:

# cd /etc/httpd/ssl
# openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr

输入上面指令后, 会要求输入国家, 城市, 机构名称及 hostname 等资讯, 然后用 openssl 建立 ca.crt 档案:

# openssl x509 -req -days 365 -in server.csr -signkey myserver.key -out ca.crt

现在可以编辑 ssl.conf:

# vi /etc/httpd/conf.d/ssl.conf

找到 “DocumentRoot”, 将前面的 “#” 注解删除, 并设定成网页的目录, 默认是 /var/www/html; 然后将 ServerName 的注解删除, 并改成 Domain Name, 改成类似这样:

DocumentRoot “/var/www/html”
ServerName www.yourdomain.com

上面的设定跟 http 的设定差不多, 现在是设定 SSL 的部份, 找到以下两行:

SSLCertificateFile
SSLCertificateKeyFile

将以上两个参数前的注解删除, 并指定到上面建立的 private key 及自签凭证:

SSLCertificateFile /etc/httpd/ssl/ca.crt
SSLCertificateKeyFile /etc/httpd/ssl/myserver.key

因为使用 SSLv3 或以下有安全问题, 需要关闭 SSLv3, 找到以下一行:

SSLProtocol all -SSLv2

改为:

SSLProtocol all -SSLv2 -SSLv3

储存盘案后离开, 并重新启动 Apache:

# systemctl restart apache

要测试是否成功安装, 可以打开浏览器, 开启服务器的 https:// 页面, 例如:

https://www.yourdomain.com/

由于上面只是使用自签凭证, 浏览器不能验证凭证, 所以浏览器会发出警告凭证不可信, 只要选择继续浏览, 便可以看到加密了的网页。

如果不想出现上面的凭证不可信警告, 可以向在网络向各大 CA 购买 SSL 凭证, 然后将凭证储存到服务器, 并修改 ssl.conf 便可以了。

如果要将所有 http:// 的页面转到 https:// 的话, 可以开启 httpd.conf, 在 http:// 的 VirtualHost 段落内, 加入以下一行:

Redirect permanent / https://www.yourdomain.com

储存后重新新动 Apache, 这样便会将所有 http:// 的请求转到 https://www.yourdomain.com

Exit mobile version