如何为Ubuntu 14.04上创建一个Apache的SSL证书

介绍

TLS或传输层安全,它的前身SSL,安全套接字层,是为了将正常流量在一个受保护,加密包装创建的安全协议。

这些协议允许在远程方之间安全地发送业务,而不存在中间的某人拦截和读取业务的可能性。 它们还有助于通过证书机构建立一个可信的和真实的服务器来验证整个互联网的域和服务器的身份。

在本指南中,我们将介绍如何在Ubuntu 14.04服务器,这将允许你加密的流量到你的服务器上创建的Apache 自签名的SSL证书 虽然这不提供第三方验证您的服务器的身份的好处,它满足了那些只想要安全地传输信息的需求。

注意:您可能需要考虑使用我们的加密,而不是自签名证书。 Let's Encrypt是一个新的证书颁发机构,颁发在大多数Web浏览器中受信任的免费SSL / TLS证书。 退房的教程开始: 如何在Ubuntu 14.04与咱们加密安全Apache

先决条件

在你开始之前,你应该有一些配置已经照顾。

在本指南中,我们将以具有sudo权限的非root用户身份操作。 您可以通过以下第1步-4在我们设置一个Ubuntu的14.04初始服务器设置指南

你还需要安装Apache。 如果您还没有启动并运行,可以通过键入以下内容快速解决:

sudo apt-get update
sudo apt-get install apache2

第一步 - 激活SSL模块

SSL支持实际上是Ubuntu 14.04 Apache包中的标准。 我们只需要启用它在我们的系统上利用SSL。

通过键入以下内容来启用模块:

sudo a2enmod ssl

启用S​​SL后,您必须重新启动网络服务器才能识别更改:

sudo service apache2 restart

这样,我们的Web服务器现在能够处理SSL,如果我们配置它这样做。

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

让我们开始在Apache的配置层次结构中创建一个子目录,放置我们将要创建的证书文件:

sudo mkdir /etc/apache2/ssl

现在我们有一个位置来放置我们的密钥和证书,我们可以通过一个步骤通过键入:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

让我们完全了解这是什么意思。

  • OpenSSL的 :这是由OpenSSL的提供创建和管理证书,密钥签名请求等基本的命令行工具
  • REQ:这指定X.509证书签名请求(CSR)管理子命令。 X.509是SSL遵守的公钥基础结构标准,用于其密钥和证书管理。 由于我们想创建一个新 X.509证书,这是我们想要的。
  • -x509:此选项指定我们要的不是生成一个证书请求自签名证书文件。
  • -nodes:这个选项告诉OpenSSL的,我们不希望我们的安全密钥文件使用密码。 有一个密码保护的密钥文件将阻碍Apache自动启动的方式,因为我们将不得不在每次服务重新启动时输入密码。
  • -days 365:指定我们正在创建的证书的有效期为一年。
  • -newkey RSA:2048:此选项将创建证书请求,并在同一时间,新的私钥。 这是必要的,因为我们没有提前创建私钥。 rsa:2048告诉OpenSSL生成RSA密钥是2048位。
  • -keyout:此参数名称为正在创建的私有密钥文件输出文件。
  • -out:该选项名称为我们所产生的证书输出文件。

当你按“ENTER”,你会被问一些问题。

请求的最重要的项目是读取“公用名称(例如服务器FQDN或您的名字)”的行。 您应输入要与证书关联的域名,如果没有域名,则应输入服务器的公共IP地址。

问题部分看起来像这样:

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your Company
Organizational Unit Name (eg, section) []:Department of Kittens
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com
Email Address []:your_email@domain.com

密钥和证书将被创建并放置在你/etc/apache2/ssl目录。

第三步 - 配置Apache使用SSL

现在我们有了我们的证书和密钥可用,我们可以配置Apache在虚拟主机文件中使用这些文件。 您可以了解更多有关如何设置Apache虚拟主机在这里。

相反,我们的基础配置文件,关闭的000-default.conf在文件sites-available子目录中,我们要立足于该配置default-ssl.conf包含一些默认的SSL配置文件。

现在使用root权限打开文件:

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

删除注释后,文件看起来像这样:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                        SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                        SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                        nokeepalive ssl-unclean-shutdown \
                        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

这看起来有点复杂,但幸运的是,我们不需要担心大多数选项在这里。

我们要为虚拟主机(ServerAdmin,ServerName,ServerAlias,DocumentRoot等)设置正常的配置,以及更改Apache寻找SSL证书和密钥的位置。

最后,它将看起来像这样。 红色条目从原始文件修改:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin admin@example.com
        ServerName your_domain.com
        ServerAlias www.your_domain.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                        SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                        SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                        nokeepalive ssl-unclean-shutdown \
                        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

保存并退出文件完成后。

第四步 - 激活SSL虚拟主机

现在我们已经配置了启用SSL的虚拟主机,我们需要启用它。

我们可以通过键入:

sudo a2ensite default-ssl.conf

然后,我们需要重新启动Apache以加载我们的新虚拟主机文件:

sudo service apache2 restart

这应该启用您的新虚拟主机,它将使用您创建的SSL证书提供加密的内容。

第五步 - 测试你的设置

既然你已经一切就绪,你可以通过指定后访问您的服务器的域名或公网IP地址,测试您的配置https://的协议,就像这样:

https://server_domain_name_or_IP

您将收到一条警告,指出您的浏览器无法验证您的服务器的身份,因为它没有被其信任的证书颁发机构之一签名。

apache ssl警告

这是预期的,因为我们已经签署了我们的证书。 虽然我们的证书不会为我们的用户验证我们的服务器,因为它没有与受信任的证书颁发机构交互,它仍然能够加密通信。

由于这是预期的,你可以点击“仍然继续”按钮或任何类似的选项,你在浏览器中。

现在,您将采取内容在DocumentRoot您为您的SSL虚拟主机配置。 这次您的流量已加密。 您可以通过点击菜单栏中的锁定图标来检查:

apache ssl加密

您可以在中间的绿色部分中看到连接已加密。

结论

您现在应该已在网站上启用SSL。 这将有助于确保游客和站点之间的通信,但是它警告说,浏览器无法验证证书的有效性每个用户。

如果您计划启动公共网站并需要SSL,则最好从可信的证书颁发机构购买SSL证书。

如果您想了解更多关于如何配置Apache ,请点击这里。 看看这个链接,了解有关如何更多的想法保护你的Linux服务器

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

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

支付宝扫一扫打赏

微信扫一扫打赏