如何为Debian 8创建基于Apache SSL证书

介绍

本教程将指导您完成使用SSL证书保护的Apache服务器的设置和配置。 在教程结束时,您将有一个可通过HTTPS访问的服务器。

SSL是基于将大整数解析为其同样大的素因子的数学难处理性。 使用它,我们可以使用私有 - 公共密钥对加密信息。 证书颁发机构可以颁发验证此类安全连接的真实性的SSL证书,并且在同一注释中,可以在没有第三方支持的情况下生成自签名证书。

在本教程中,我们将生成自签名证书,进行必要的配置并测试结果。 自签名证书非常适合测试,但会导致用户浏览器错误,因此不建议用于生产。

如果您想获得完税凭证,而不是,请参阅本教程

先决条件

要遵循本教程,您需要:

  • 一个新的Debian 8 Droplet
  • sudo的一个非root用户,您可以通过下面的第2步和3设置本教程
  • OpenSSL已安装和更新(应默认安装)
sudo apt-get update
sudo apt-get upgrade openssl

您可能需要安装具有OpenSSL的第二台计算机,用于测试目的:

  • 另一个Linux Droplet
  • 或者,基于Unix的本地系统(Mac,Ubuntu,Debian等)

第1步 - 安装Apache

在这一步中,我们将使用称为一个内置的安装程序包 apt-get 它大大简化了软件包管理,并有助于清洁安装。

在先决条件指定的链接,你应该已经更新了apt-get并安装了sudo包,不像其他的Linux发行版,Debian 8不附带sudo安装。

Apache将是我们的HTTPS服务器。 要安装它,请运行以下命令:

sudo apt-get install apache2

第2步 - 启用SSL模块

在本节中,我们将在我们的服务器上启用SSL。

首先,启用Apache SSL模块。

sudo a2enmod ssl

默认的Apache网站提供了一个启用SSL的有用模板,因此我们现在将激活默认网站。

sudo a2ensite default-ssl

重新启动Apache以使这些更改生效。

sudo service apache2 reload

第3步 - 创建自签名的SSL证书

首先,让我们创建一个新目录,我们可以存储私钥和证书。

sudo mkdir /etc/apache2/ssl

接下来,我们将要求一个新的证书并签名。

首先,生成新的证书和私钥以保护它。

  • days标志指定证书应该多久仍然有效。 使用此示例,证书将持续一年
  • keyout标志指定我们生成的密钥的路径
  • out标志指定我们生成的证书路径
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

调用此命令将导致一系列提示。

  • 通用名 :指定您的服务器的IP地址或主机名。 此字段很重要,因为您的证书需要与您的网站的域(或IP地址)匹配
  • 自行决定填写所有其他字段。

实施例答案示于下面的红色

InteractiveYou are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
——-
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:SSL Certificate Test
Common Name (e.g. server FQDN or YOUR name) []:example.com               
Email Address []:test@example.com

设置文件权限以保护您的私钥和证书。

sudo chmod 600 /etc/apache2/ssl/*

有关三位数权限的代码的详细信息,请参见教程Linux权限

您的证书和保护它的私钥现在已准备好供Apache使用。

第4步 - 配置Apache以使用SSL

在本节中,我们将配置默认的Apache虚拟主机以使用SSL密钥和证书。 进行此更改后,我们的服务器将开始提供HTTPS,而不是默认网站的HTTP请求。

使用打开服务器配置文件nano或您喜爱的文本编辑器。

sudo nano /etc/apache2/sites-enabled/default-ssl.conf

找到开头的部分<VirtualHost _default_:443>并进行以下修改。

  • 添加一行与下面您的服务器名称directy ServerAdmin电子邮件线。 这可以是您的域名或IP地址:
/ etc / apache2 / sites-enabled / default
ServerAdmin webmaster@localhost
ServerName example.com:443
  • 找到以下两行,并更新路径以匹配我们先前生成的证书和密钥的位置。 如果您购买了证书或在其他地方生成了证书,请确保此处的路径与您的证书和密钥的实际位置相匹配:
/ etc / apache2 / sites-enabled / default
 SSLCertificateFile /etc/apache2/ssl/apache.crt
 SSLCertificateKeyFile /etc/apache2/ssl/apache.key

进行这些更改后,请检查虚拟主机配置文件是否与以下内容匹配。

/ etc / apache2 / sites-enabled / default-ssl
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName example.com:443
        DocumentRoot /var/www/html

        . . .
        SSLEngine on

        . . .

        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

保存并退出文件。

重新启动Apache以应用更改。

sudo service apache2 reload

要了解更多关于一般配置Apache虚拟主机,看到这篇文章

第5步 - 使用SSL测试Apache

在本节中,我们将从命令行测试您的SSL连接。

您可以从(1)您的本地基于Unix的系统,(2)另一个Droplet或(3)相同的Droplet运行此测试。 如果您从外部系统运行它,您将确认您的网站可通过公共互联网访问。

通过HTTPS 443端口打开连接。

openssl s_client -connect your_server_ip:443

滚动到输出的中间(在键后面),您应该会发现以下内容:

Output—-
SSL handshake has read 3999 bytes and written 444 bytes
—-

. . .

SSL-Session:

. . .

当然,数字是可变的,但这是成功的。 恭喜!

CTRL+C退出。

您还可以访问在Web浏览器您的网站,在URL(使用HTTPS https://example.com )。 您的浏览器将警告您证书是自签名的。 您应该可以查看证书,并确认详细信息与您在第3步中输入的内容相符。

结论

我们的教程到此结束,让您有一个工作的Apache服务器,使用SSL证书安全配置。 有关使用OpenSSL的的详细信息,请参阅OpenSSL的精华文章

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏