安装

安装

我正在尝试在我的 apache2 网络服务器上设置 SSL,但似乎根本不起作用。

我已按照教程使用 openssl 创建证书文件并/etc/apache2/sites-available/default-ssl.conf正确配置。

每次我尝试使用 https 打开网站时,我的浏览器都会因安全问题而拒绝连接。它说我没有正确配置我的网站。

在 my 中,/var/log/apache2/error.log我收到警告,表示我的服务器证书不包含与服务器名称匹配的 ID。

[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'

您对如何解决这个问题有什么想法吗?谢谢您的关注!

答案1

好吧,我注意到这篇文章最近被浏览得很频繁,所以似乎很多人都面临着和我一样的问题。如果是这样,那么这可能对您有帮助。

我按照简单的分步教程为我的网络服务器创建了 SSL 认证。像许多教程一样,我遵循的教程的结果是使用 OpenSSL 的自签名证书。是的自签名,这就是问题所在。浏览器无法信任服务器,因为它的证书是自己签名的。嗯,我也不会做...

证书必须由外部值得信赖的证书颁发机构 (CA) 签名。所以我偶然发现让我们加密它可以为您完成所有工作,并且更容易设置,而且最好的是:它完全免费。

安装

1) 删除使用 OpenSSL 创建的旧 ssl 证书文件

2) 打开向后移植以在 Debian 上获取 certbot 客户端。您应该知道,这将为未完成的软件打开一个漏洞!仅当您了解自己在做什么时才安装软件包。

echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list

3)更新你的Linux系统

sudo apt-get update

4)安装证书机器人

sudo apt-get install python-certbot-apache -t jessie-backports

5)设置apache ServerName和ServerAlias

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

6) 编辑apache配置文件

<VirtualHost *:80>
    . . .
    ServerName example.com
    ServerAlias www.example.com
    . . .
</VirtualHost>

7) 检查语法是否正确

sudo apache2ctl configtest

8) 如果配置文件看起来没问题,请重新启动 apache 服务器

sudo systemctl restart apache2

9) 使用 certbot 设置证书并按照屏幕上的说明进行操作。

sudo certbot --apache

更新

Let's Encrypt 的所有证书的有效期为 3 个月。要更新您可以手动运行

sudo certbot renew

或者将此服务自动化为 cron 作业

sudo crontab -e

并输入以下行以在每周一凌晨 2:30 调用续订。

. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

您可以在此处遵循更详细的教程:https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8

答案2

就我而言,我已通过在每个相关域的 apache ssl 配置文件中替换来解决此问题:

ServerName mydomain.com
ServerAlias www.mydomain.com

经过 :

ServerName www.mydomain.com
ServerAlias mydomain.com

因为我的证书适用于“www.mydomain.com”而不是“mydomain.com”

完整的阿帕奇文件:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin [email protected]
        ServerName www.mydomain.com
        ServerAlias mydomain.com
    DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    <Directory />
        Options +FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /home/mydomain.com/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>


ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

答案3

如果您没有看到其他 SSL 错误,并且您已尝试在 httpd.conf 文件中设置“LogLevel debug”,则此错误消息还可能表明 httpd.conf 文件中缺少“Listen 443”。

答案4

我最近遇到了这个问题,当时我的自签名证书过期了。我用谷歌搜索并刚刚复制了从一个网站创建新证书的命令。

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

在我的 apache 配置文件中:/etc/apache2/sites-available/default-ssl.conf。证书文件和密钥文件是指以下文件名。

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

因此,在我的例子中看到的错误更容易修复,只需在创建 ssl 证书时提供证书密钥文件的正确位置即可。

所以,这是我应该正确使用和输入的命令。

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

相关内容