Apache SSL:服务器证书不包括与服务器名称匹配的ID
我试图在我的apache2 webserver上设置SSL,但似乎根本无法工作。
我按照教程用openssl创建了cert文件,并正确配置了/etc/apache2/sites-available/default-ssl.conf
。
每次我试图用https打开我的网站时,我的浏览器都因安全问题而拒绝连接。它说,我没有正确配置我的网站。
在我的/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'
你有什么办法来解决这个问题吗?谢谢!
21
3
好吧,我注意到这个帖子最近被浏览的频率很高,所以似乎很多人都面临着和我一样的问题。如果是这样,那么这可能对你有帮助。
我按照一个简单的步骤教程为我的网络服务器创建了一个SSL证书。就像外面的许多教程一样,我遵循的教程的结果是使用OpenSSL的自签名证书。是的,自签的,这就是问题所在。浏览器无法信任服务器,因为它的证书是由自己签署的。好吧,我也不会这么做......
证书必须由外部值得信赖的证书机构(CA)签署。因此,我偶然发现了Let's Encrypt,它为你做所有的工作,甚至更容易设置,最好的是:它是完全免费的。
安装
删除你用OpenSSL创建的旧的ssl证书文件
在Debian上打开Backports以获得certbot客户端。你应该知道,这将为未完成的软件打开一个洞!只有在你知道你在做什么的时候才安装软件包。
更新
Let's Encrypt的所有证书的有效期为3个月。要更新,你可以手动运行
或将此服务作为一个cron job自动运行
并输入以下一行,以调用每周一凌晨2:30的更新。
你可以按照这里的更详细的教程:https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8
如果你没有看到其他SSL错误、 并且你已经尝试在httpd.conf文件中设置'LogLevel debug'、 这个错误信息也可能表明httpd.conf文件中缺少'Listen 443'。
这些不是错误--它们是警告。只要你定义了一个默认的ssl主机,并且证书上的通用名称与客户连接使用的主机名称相匹配,就很有可能使用不符合定义的服务器名称的证书运行mod_ssl。
在你的情况下,后者似乎不是真的。正如雅各布所说,你需要在创建CSR时*指定正确的主机名作为公共名称(或别名)。
要查看证书上目前有哪些名称:
如果机器上安装了多个证书,并在同一IP地址上提供服务,那么:
(其中${...}的值是占位符,你应该用相关的值替换)。