[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

在 CentOS 设置一个 SSL 加密的网页服务器

<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[1]"] (see also the log)>>

这个指引会解释如何设置一个支持 https 的网站。这个教程使用一个自我签署的金钥,因此它适用於个人网站或作测试用途。这个指引并未经修订,因此请自行承担风险,并进行备份!

1. 取得所需的软件

你需要为一台 SSL 加密的网页服务器预备数件东西。视乎你的安装,你可能并未安装 OpenSSL 或 mod_ssl,Apache 连接到 OpenSSL 的界面。如果你有需要,请用 yum 来安装它们。

yum install mod_ssl openssl

yum 会告诉你它们已经安装,或者为你安装它们。

2. 产生一张自我签署的凭证

我们将会利用 OpenSSL 来产生一张自我签署的凭证。如果你在一台生产用的服务器上做这个动作,你应该会想从一个被信赖的凭证机构取得一条金钥,但假若你只是用在一个私人网站上或作测试之用,自我签署的凭证已经足够了。要创建金钥,你必须是 root 用户,因此你可使用 su 变为 root 用户,或在指令前面运用 sudo

# 产生私钥
openssl genrsa -out ca.key 2048

# 产生 CSR
openssl req -new -key ca.key -out ca.csr

# 产生自我签署的金钥
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

# 复制文件至正确位置
cp ca.crt /etc/pki/tls/certs
cp ca.key /etc/pki/tls/private/ca.key
cp ca.csr /etc/pki/tls/private/ca.csr

ArtWork/WikiDesign/icon-admonition-alert.png

警告:如果你采用 SELinux,请确保你复制这些文件而不是迁移它们。否则 Apache 将会投诉关于违漏了的凭证档,因为它不能读入这些拥有错误 SELinux 脉络的凭证档。

假如你迁移了这些文件而不是复制它们,你可以用以下的指命来矫正这些文件的 SELinux 脉络,因为 /etc/pki/* 的正确脉络定义已包含在 SELinux 政策里。

restorecon -RvF /etc/pki

接著我们须要更新 Apache SSL 的配置文件

vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf

请修改路径至金钥文件的存储位置。如果你采用上面的方法,这会是

SSLCertificateFile /etc/pki/tls/certs/ca.crt

然后在再低数行的位置为凭证金钥文件设置正确路径。如果你按照上面的指引,这会是:

SSLCertificateKeyFile /etc/pki/tls/private/ca.key

存储及离开文件,然后重新引导 Apache

/etc/init.d/httpd restart

假若一切正常的话,你现在应该可以通过 https 连接到你的服务器,并看见 CentOS 的缺省页面。由於凭证是自我签署的,浏览器一般会徵询你是否接纳这个凭证。

3. 设置虚拟主机

一如你为 http 在端口 80 上设立 VirtualHost,你亦可为 https 在端口 443 上作样似的设置。一个在端口 80 上的网站的典型 VirtualHost 有如下样子

<VirtualHost *:80>
        <Directory /var/www/vhosts/yoursite.com/httpdocs>
        AllowOverride All
        </Directory>
        DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
        ServerName yoursite.com
</VirtualHost>

要在端口 443 上增加一个姊妹网站,你需要在你的文件顶部加入下列内容

NameVirtualHost *:443

然后再加入一个类似如下的 VirtualHost 记录:

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/ca.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ca.key
        <Directory /var/www/vhosts/yoursite.com/httpsdocs>
        AllowOverride All
        </Directory>
        DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
        ServerName yoursite.com
</VirtualHost>

利用这个指令重新引导 Apache

/etc/init.d/httpd restart

4. 设置防火墙

你现在应该拥有一个以自我签署凭证来支持 https 的网站。如果你未能连接,你或许需要在防火墙上打开端口。要这样做,请更改你的 iptables 规则:

iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/service iptables save
iptables -L -v

Translation of revision 7


2023-09-11 07:23