And*_* S. 2 server ssl apache2 16.04
我有一些 Ubuntu 16.04 服务器正在运行,并在 apache2 中设置了一个使用(或应该使用)ssl 的虚拟主机。
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin myemail@mailhoster.xx
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>
Run Code Online (Sandbox Code Playgroud)
我不是让标准的站点可用/默认的ssl.conf。
我现在可以浏览到https://my.domain.name.de并且它要求在 Firefox 中添加一些例外,如果我没有购买任何证书,这是完全正常的。
但我想知道在哪里设置它应该使用 /etc/apache2/ssl/ 目录中的证书。我找不到任何被告知要使用它的配置。我一直在想它会使用 /etc/ssl 文件夹中的东西。
或者我可能没有正确激活 SSL?
根据一些手册,SSL 证书文件必须放在 下/etc/apache2/ssl/
,但它们可以放在不同的文件夹中,具体取决于您自己的配置。
要对您的站点进行 HTTPS 访问,您必须启用SSLEngine
并提供有效的SSL 证书。
为此,您应该使用OpenSSL命令行工具来生成您自己的证书。然后您需要在任何提供商处验证证书,例如COMODO、StarSSL、您的本地 DNS 提供商等。通常他们会提供几个月的免费证书。关于这种证书生成方式,您可以查看以下指南:对于14.04和16.04。
您也可以使用软件工具Let's Encrypt。从让我们加密入门页面:
要在您的网站上启用 HTTPS,您需要从证书颁发机构 (CA) 获取证书(一种文件类型)。Let's Encrypt 是一个 CA。为了从 Let's Encrypt 获得您网站域的证书,您必须证明对域的控制。通过 Let's Encrypt,您可以使用使用 ACME 协议的软件来执行此操作,该协议通常在您的 Web 主机上运行。
我建议你在这个阶段使用 Let's Encrypt。那么让我们开始吧。
第一- 安装让我们加密:
sudo apt install python-letsencrypt-apache
Run Code Online (Sandbox Code Playgroud)
2 - 生成证书。要生成与 Apache 兼容的 SSL 证书,只需键入:letsencrypt --apache
. 此命令将启动交互式对话(您必须在其中填写您网站的个人数据)并将HTTPS.conf
根据您现有的HTTP.conf
文件生成文件。
您可以使用和一些附加参数,例如letsencrypt --apache certonly
将执行与上述相同的操作但不会生成HTTPS.conf
文件。
您也可以放置所有必要的参数来避免对话。根据问题中提供的信息,我们的命令应如下所示:
sudo letsencrypt --apache certonly --rsa-key-size 4096 --email myemail@mailhoster.xx -d my.domain.name.de
Run Code Online (Sandbox Code Playgroud)
假设您选择了最后一种方法。该命令将生成所有必需的证书文件,并将它们放置在文件夹中/etc/letsencrypt/archive/my.domain.name.de/
。这些文件也将被符号链接到文件夹中/etc/letsencrypt/live/my.domain.name.de/
。这些符号链接将来会自动更新,因此我们将使用它们。
第三- 配置(手动)您的 HTTPS VirtualHost。根据上面的配置文件应该是这样的:
sudo apt install python-letsencrypt-apache
Run Code Online (Sandbox Code Playgroud)
4th -a2ensite
新的 VirtualHost,以防万一a2enmod ssl
并重新启动 Apache。就是这样。我希望您现在可以通过 HTTPS 访问您的网站。
5 - 将您的证书更新到未来。为此,您可以编辑 root 的Crontab并添加一个将尝试letsencrypt renew
证书的作业,例如每周日凌晨 3:00。键入sudo crontab -e
并在底部加入这一行:
0 3 * * 0 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log 2>&1
Run Code Online (Sandbox Code Playgroud)
笔记:
letsencrypt
/python-letsencrypt-apache
可用于 Ubuntu 16.04 及更高版本,对于以前的版本certbot
,几乎相同 - 来自Ubuntu Manuals。
如果您的 VirtualHosts 很少,您可以使用以下语法生成它们的证书(一起):
sudo letsencrypt --apache certonly --rsa-key-size 4096 --email myemail@mailhoster.xx -d my.domain.name-1.de -d my.domain.name-2.de -d my.domain.name-3.de
Run Code Online (Sandbox Code Playgroud)certbot.eff.org - 使用 EFF 的 Certbot 在您的网站上自动启用 HTTPS,部署 Let's Encrypt 证书。
上面的答案基于this one,其中提供了有关 Apache VH 配置的更多详细信息。
在2019 年 2 月 13 日之前阅读如何以及为何更新您的letsecrypt
/ certbot
:无法在 Ubuntu Bionic 上升级 certbot
归档时间: |
|
查看次数: |
3353 次 |
最近记录: |