如何在 Ubuntu 14.04 上为 Apache 创建 SSL 证书

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 如何在 Ubuntu 14.04 上为 Apache 创建 SSL 证书

简介

TLS,即传输层安全协议,及其前身SSL,安全套接字层,是为了将正常流量放置在受保护的加密包装中而创建的安全协议。

这些协议允许远程方安全地发送流量,而不会被中间人拦截和阅读。它们还通过由证书颁发机构建立服务器的受信任和真实性,对互联网上的域和服务器的身份进行验证,起着重要作用。

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

先决条件

在开始之前,您应该已经处理了一些配置。

在本指南中,我们将作为具有 sudo 特权的非 root 用户操作。您可以按照我们的 Ubuntu 14.04 初始服务器设置指南中的步骤 1-4 设置一个用户。

您还需要已安装 Apache。如果您还没有安装,可以通过以下命令快速解决:

sudo apt-get update
sudo apt-get install apache2

步骤一 — 激活 SSL 模块

实际上,SSL 支持已经包含在 Ubuntu 14.04 Apache 包中。我们只需要启用它以利用系统上的 SSL。

通过输入以下命令来启用模块:

sudo a2enmod ssl

启用 SSL 后,您需要重新启动 Web 服务器以使更改生效:

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 生成一个长度为 2048 位的 RSA 密钥。
  • -keyout:此参数为正在创建的私钥文件命名输出文件。
  • -out:此选项为我们正在生成的证书命名输出文件。

当您按下"ENTER"键时,将会询问您一些问题。

最重要的项目是要求的一行,即“Common Name (e.g. server FQDN or YOUR name)”。您应该输入要与证书关联的域名,或者如果您没有域名,则输入服务器的公共 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 虚拟主机的信息。

我们不再基于 sites-available 子目录中的 000-default.conf 文件来配置我们的配置文件,而是基于包含一些默认 SSL 配置的 default-ssl.conf 文件来配置。

现在以 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 <span class="highlight">admin@example.com</span>
        <span class="highlight">ServerName your_domain.com</span>
        <span class="highlight">ServerAlias www.your_domain.com</span>
        DocumentRoot <span class="highlight">/var/www/html</span>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile <span class="highlight">/etc/apache2/ssl/apache.crt</span>
        SSLCertificateKeyFile <span class="highlight">/etc/apache2/ssl/apache.key</span>
        <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 证书来提供加密内容。

第五步 — 测试你的设置

现在你已经准备好了一切,你可以通过在指定 https:// 协议后访问你服务器的域名或公共 IP 地址来测试你的配置,就像这样:

https://<span class="highlight">server_domain_name_or_IP</span>

你会收到一个警告,告诉你的浏览器无法验证你的服务器的身份,因为它没有被它信任的证书颁发机构签名。

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

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

现在你将被带到你为 SSL 虚拟主机配置的 DocumentRoot 中的内容。这次你的流量是加密的。你可以通过点击菜单栏中的锁图标来检查这一点:

!apache ssl encrypted

你可以看到中间的绿色部分显示连接是加密的。

结论

您现在应该已经在您的网站上启用了 SSL。这将有助于保护访问者和您的网站之间的通信,但它警告每个用户浏览器无法验证证书的有效性。

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

如果您想了解更多关于如何配置 Apache 的信息,请点击这里。查看此链接以获取更多有关如何保护您的 Linux 服务器的想法。


目录
相关文章
|
3月前
|
Ubuntu Java 应用服务中间件
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
92 0
|
3月前
|
消息中间件 Ubuntu Java
在Ubuntu 18.04上安装Apache Kafka的方法
在Ubuntu 18.04上安装Apache Kafka的方法
174 0
|
3月前
|
安全 Linux 网络安全
如何在 CentOS 7 上为 Apache 创建 SSL 证书
如何在 CentOS 7 上为 Apache 创建 SSL 证书
54 0
|
4天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
30天前
|
Ubuntu 网络安全 Apache
Ubuntu下安装Apache2.4.7遇到的问题及解决办法
Ubuntu下安装Apache2.4.7遇到的问题及解决办法
|
3月前
|
安全 Unix Linux
如何在 Debian 8 上为 Apache 创建 SSL 证书
如何在 Debian 8 上为 Apache 创建 SSL 证书
29 1
|
3月前
|
Ubuntu 关系型数据库 MySQL
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
32 0
|
3月前
|
Ubuntu Java 应用服务中间件
在Ubuntu 16.04上安装Apache Tomcat 8的方法
在Ubuntu 16.04上安装Apache Tomcat 8的方法
33 0
|
3月前
|
Ubuntu 安全 Java
在Ubuntu 14.04上安装Apache Tomcat 8的方法
在Ubuntu 14.04上安装Apache Tomcat 8的方法
21 0
|
3月前
|
消息中间件 存储 Ubuntu
在Ubuntu 14.04上安装Apache Kafka的方法
在Ubuntu 14.04上安装Apache Kafka的方法
19 0