介绍
本教程将指导您通过使用SSL证书保护的Apache服务器的设置和配置,到教程结束时,您将有一个通过HTTPS访问的服务器。
SSL 基于将一个大整数解决为其同样大的主要因素的数学不可磨灭性。使用此方法,我们可以使用私钥对加密信息。 证书当局可以发行 SSL 证书来验证这种安全连接的真实性,并在同一笔记下,可以生成无需第三方支持的自签证书。
在本教程中,我们将生成自签证书,进行必要的配置,并测试结果.自签证书非常适合测试,但会导致用户的浏览器错误,因此不推荐用于生产。
如果您想获得付费证书,请参阅 此教程。
前提条件
要遵循本教程,您将需要:
- 一个新的 Debian 8 Droplet * 一个 sudo 非 root 用户,您可以通过遵循 本教程的步骤 2 和 3 来设置 * OpenSSL 安装和更新(默认安装)
1sudo apt-get update
2sudo apt-get upgrade openssl
您可能需要安装OpenSSL的第二台计算机,用于测试:
另一个LinuxDropplet或基于Unix的本地系统(Mac、Ubuntu、Debian等)
第1步:安装Apache
在此步骤中,我们将使用内置的 _package 安装程序,称为 apt-get
. 它极大地简化了包管理,并促进了清洁的安装。
在前提条件中指定的链接中,您应该更新apt-get
并安装了sudo
包,因为与其他Linux发行版不同,Debian 8没有安装sudo
。
Apache 將是我們的 HTTPS 伺服器. 要安裝它,請執行以下操作:
1sudo apt-get install apache2
步骤 2 – 启用 SSL 模块
在本节中,我们将在我们的服务器上启用SSL。
首先,启用 Apache SSL 模块。
1sudo a2enmod ssl
默认的Apache网站包含一个有用的模板来启用SSL,所以我们现在将激活默认的网站。
1sudo a2ensite default-ssl
重新启动 Apache 以执行这些更改。
1sudo service apache2 reload
第3步:创建一个自签名的SSL证书
首先,让我们创建一个新的目录,在那里我们可以存储私钥和证书。
1sudo mkdir /etc/apache2/ssl
接下来,我们将要求新的证书并签署它。
首先,生成新的证书和私钥来保护它。
*日期
旗指明证书应该有效多长时间.使用此示例,证书将有效期为一年 *关键
旗指明我们生成的密钥的路径 *外出
旗指明我们生成的证书的路径
1sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
召喚這個命令將導致一系列提示。
- ** 通用名称** :指定您的服务器的 IP 地址或主机名称. 这个字段很重要,因为您的证书需要匹配您的网站的域(或 IP 地址) * 按照您的判断填写所有其他字段。
示例答案如下红色。
1[secondary_label Interactive]
2You are about to be asked to enter information that will be incorporated
3into your certificate request.
4What you are about to enter is what is called a Distinguished Name or a DN.
5There are quite a few fields but you can leave some blank
6For some fields there will be a default value,
7If you enter '.', the field will be left blank.
8——-
9Country Name (2 letter code) [AU]:US
10State or Province Name (full name) [Some-State]:New York
11Locality Name (eg, city) []:NYC
12Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean
13Organizational Unit Name (eg, section) []:SSL Certificate Test
14Common Name (e.g. server FQDN or YOUR name) []:example.com
15Email Address []:[email protected]
设置文件权限以保护您的私钥和证书。
1sudo chmod 600 /etc/apache2/ssl/*
有关三位数权限代码的更多信息,请参阅关于 Linux 权限的教程。
您的证书和保护它的私钥现在已经为 Apache 准备好使用。
步骤 4 — 配置 Apache 使用 SSL
在本节中,我们将配置默认的 Apache 虚拟主机以使用 SSL 密钥和证书. 进行此更改后,我们的服务器将开始服务 HTTPS 而不是默认网站的 HTTP 请求。
使用nano
或您最喜欢的文本编辑器打开服务器配置文件。
1sudo nano /etc/apache2/sites-enabled/default-ssl.conf
查找以「
- 在
ServerAdmin
电子邮件行下方添加您的服务器名称直线,这可能是您的域名或IP地址:
1[label /etc/apache2/sites-enabled/default]
2ServerAdmin webmaster@localhost
3ServerName example.com:443
- 查找以下两行,并更新路径以匹配我们先前生成的证书和密钥的位置. 如果您在其他地方购买证书或生成证书,请确保这里的路径匹配您的证书和密钥的实际位置:
1[label /etc/apache2/sites-enabled/default]
2 SSLCertificateFile /etc/apache2/ssl/apache.crt
3 SSLCertificateKeyFile /etc/apache2/ssl/apache.key
完成这些更改后,请检查您的虚拟主机配置文件是否符合以下内容。
1[label /etc/apache2/sites-enabled/default-ssl]
2<IfModule mod_ssl.c>
3 <VirtualHost _default_:443>
4 ServerAdmin webmaster@localhost
5 ServerName example.com:443
6 DocumentRoot /var/www/html
7
8 . . .
9 SSLEngine on
10
11 . . .
12
13 SSLCertificateFile /etc/apache2/ssl/apache.crt
14 SSLCertificateKeyFile /etc/apache2/ssl/apache.key
保存和退出文件。
重新启动 Apache 以应用更改。
1sudo service apache2 reload
有关一般配置 Apache 虚拟主机的更多信息,请参阅 本文。
第5步:使用SSL测试Apache
在本节中,我们将从命令行测试您的SSL连接。
您可以從 (1)本地基於 Unix 的系統, (2) 另一個 Droplet,或 (3) 同一個 Droplet 執行這個測試。
打开通过 HTTPS 443 端口的连接。
1openssl s_client -connect your_server_ip:443
滚动到输出的中间(键后),你应该找到以下内容:
1[secondary_label Output]
2—-
3SSL handshake has read 3999 bytes and written 444 bytes
4—-
5
6. . .
7
8SSL-Session:
9
10. . .
当然,数字是可变的,但这是成功!恭喜!
按CTRL+C
即可退出。
您也可以在 Web 浏览器中访问您的网站,使用 URL 中的 HTTPS (https://example.com
)。 您的浏览器会提醒您证书是自签名的。 您应该能够查看证书并确认细节与您在步骤 3 中输入的内容相匹配。
结论
這結束了我們的教程,讓您使用一個工作 Apache 伺服器,安全地配置使用 SSL 證書. 關於使用 OpenSSL 的更多資訊,請參閱 OpenSSL Essentials 文章。