如何在 Debian 8 的 Apache 上创建 SSL 证书

介绍

本教程将指导您通过使用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 文章

Published At
Categories with 技术
comments powered by Disqus