Ubuntu 16.04 何时使用 /etc/apache2/ssl/apache.crt?

Ubuntu 16.04 何时使用 /etc/apache2/ssl/apache.crt?

我有一些正在运行的 Ubuntu 16.04 服务器,并在 apache2 中设置了一个使用(或应该使用)ssl 的 vhost。

<IfModule mod_ssl.c>
        <VirtualHost *:443>

        ServerAdmin [email protected]
        ServerName my.domain.name.de
        DocumentRoot /var/www/mysslsite

        <Directory /var/www/mysslsite>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/mysite.ssl.error.log
        CustomLog ${APACHE_LOG_DIR}/mysite.ssl.access.log combined

        </VirtualHost>
</IfModule>

我做到了不是启用标准 sites-available/default-ssl.conf。

我现在可以浏览https://my.domain.name.de并且它要求在 Firefox 中添加一些例外情况,如果我没有购买任何证书,这完全正常。

但我想知道它应该在哪里使用 /etc/apache2/ssl/ 目录中的证书。我找不到任何配置来指示使用它。我一直在想它会使用 /etc/ssl 文件夹中的某些内容。

或者我可能没有正确激活 SSL?

答案1

根据一些手册,SSL 证书文件必须放在下/etc/apache2/ssl/,但它们也可以放在不同的文件夹中,具体取决于您自己的配置。

要通过 HTTPS 访问您的网站,您必须启用SSLEngine并提供有效的SSL 证书

为此你应该使用OpenSSL命令行工具来生成您自己的证书。然后您需要在任何提供商处验证证书,例如科摩多星型SSL、您当地的 DNS 提供商等。通常他们会提供几个月的免费证书。关于这种证书生成方式,您可以查看以下指南:14.0416.04

您也可以使用软件工具让我们加密。 从让我们加密入门页:

要在您的网站上启用 HTTPS,您需要从证书颁发机构 (CA) 获取证书(一种文件类型)。Let's Encrypt 是一家 CA。为了从 Let's Encrypt 获取您网站域名的证书,您必须证明对该域名的控制权。使用 Let's Encrypt,您可以使用使用 ACME 协议的软件来执行此操作,该软件通常在您的网络主机上运行。


在此阶段,我建议您使用 Let's Encrypt。那么让我们开始吧。

第一- 安装 Let's Encrypt:

sudo apt install python-letsencrypt-apache

第二- 生成证书。要生成与 Apache 兼容的 SSL 证书,只需输入: 。此命令将启动交互式对话(您必须在其中填写您网站的个人数据)并根据您现有的文件letsencrypt --apache生成文件。HTTPS.confHTTP.conf

您可以使用一些附加参数,例如letsencrypt --apache certonly将执行与上述相同的操作但不会生成HTTPS.conf文件。

您还可以输入所有必要的参数以避免对话。根据问题中提供的信息,我们的命令应该是这样的:

sudo letsencrypt --apache certonly --rsa-key-size 4096 --email [email protected] -d my.domain.name.de

假设您选择最后一种方法。该命令将生成所有必要的证书文件,并将它们放置在文件夹中/etc/letsencrypt/archive/my.domain.name.de/。这些文件还将符号链接到文件夹中/etc/letsencrypt/live/my.domain.name.de/。这些符号链接将来会自动更新,因此我们将使用它们。

第三- 配置(手动)您的 HTTPS VirtualHost。根据上述内容,配置文件应如下所示:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>

       ServerAdmin [email protected]
       ServerName my.domain.name.de
       DocumentRoot /var/www/mysslsite           

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/my.domain.name.de/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/my.domain.name.de/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/my.domain.name.de/chain.pem

        <Directory /var/www/mysslsite>
            Options FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/mysite.ssl.error.log
        CustomLog ${APACHE_LOG_DIR}/mysite.ssl.access.log combined

    </VirtualHost>
</IfModule>

第四-a2ensite新的 VirtualHost,以防万一a2enmod ssl,然后重新启动 Apache。就是这样。我希望现在您可以对您的网站进行 HTTPS 访问。

第五- 更新您的证书。为此,您可以编辑根的定时任务并添加一个将尝试letsencrypt renew证书的作业,例如每周日凌晨 3:00。sudo crontab -e在底部输入并添加以下行:

0 3 * * 0 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log 2>&1



笔记:

  • letsencrypt/python-letsencrypt-apache适用于 Ubuntu 16.04 及以上版本,对于之前的版本,certbot它几乎是相同的 - 来自Ubuntu 手册

  • 如果您有少数虚拟主机,您可以使用此语法来生成它们的证书(全部一起):

    sudo letsencrypt --apache certonly --rsa-key-size 4096 --email [email protected] -d my.domain.name-1.de -d my.domain.name-2.de -d my.domain.name-3.de
    
  • certbot.eff.org- 使用 EFF 的 Certbot 自动在您的网站上启用 HTTPS,部署 Let's Encrypt 证书。

  • 以上答案基于这个,其中提供了有关 Apache 的 VH 配置的更多详细信息。


请在此处阅读如何以及为什么您应该在 2019 年 2 月 13 日之前更新您的letsecrypt/ certbot无法在 Ubuntu Bionic 上升级 certbot

相关内容