如何撤销默认的 Snakeoil 证书?

如何撤销默认的 Snakeoil 证书?

尽管事实上从未在任何虚拟主机中使用过该证书,但 Windows XP 仍在使用 Ubuntu 附带的 snakeoil 证书。

该证书位于

/etc/ssl/certs/ssl-cert-snakeoil.pem

我不知道钥匙在哪里。我看到的唯一一个看似合理的是

/etc/ssl/private/ssl-cert-snakeoil.key

我认为 CA 证书位于

/etc/ssl/certs/ca-certificates.crt

但我不太确定。

到目前为止,我已经尝试了各种 openssl 命令,例如

openssl ca -keyfile /etc/ssl/private/ssl-cert-snakeoil.key \
    -revoke /etc/ssl/certs/ssl-cert-snakeoil.pem \
    -cert /etc/ssl/certs/ca-certificates.crt

那个的输出是

Using configuration from /usr/lib/ssl/openssl.cnf
CA certificate and CA private key do not match
14805:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:406:

我没什么主意了。任何帮助我都非常感谢。

编辑

事情是这样的:

我从 GeoTrust 购买了证书,安装了它,使用该证书激活了新的虚拟主机,然后重新启动了 apache2。在此服务器的整个生命周期中,从未使用过任何其他证书来保护网络流量,更不用说 snakeoil 证书了。Windows Vista 及更高版本以及我测试过的 OSX 和所有 Linux 发行版都使用正确的证书。Windows XP 使用 snakeoil 证书(在 IE 中。该 VM 上没有其他浏览器)。以下是一些屏幕截图:

Chrome 中加载了正确的证书

Windows XP 上的 IE 8 中加载了错误的证书

答案1

鉴于您提供的额外信息,我可能更容易开始另一个答案。

似乎没有向 Windows 客户端出示伪“snakeoil”证书。生成的“snakeoil”证书的主题为CN=Ubuntu,而向 Windows 客户端出示的证书的主题为CN=Production。因此,我们在这里查看的是第三个证书。

如果我使用 OpenSSL 连接到您的服务器,我可以看到相同的证书s_client

$ openssl s_client -connect portal.avendimedia.com:443
...
Certificate chain
 0 s:/CN=Production
   i:/CN=Production
...

我认为发生的事情是,您已将 Web 服务器配置为使用服务器名称指示扩展。此扩展旨在让服务器根据客户端想要连接的主机名提供不同的证书。

这在大多数现代浏览器中都运行良好,但在 Vista 之前的 Windows 版本的 Internet Explorer 中不起作用。目前看来,微软不太可能更新 Windows XP 上的 SSL 库以支持 SNI 扩展。

如果您需要您的网站与 XP 上的 Internet Explorer 一起工作,请查看是否可以从 Apache 配置中删除对在同一 IP 地址上运行的其他 SSL 主机的引用。

答案2

ssl-cert安装该包时会自动生成“snakeoil”证书。

这是一个自签名证书,因此撤销它没有什么意义。不过,您可以轻松生成一个新的:

sudo make-ssl-cert generate-default-snakeoil --force-overwrite

您可能必须重新启动使用该证书的任何服务才能使更改生效。

当您说 Windows XP 继续使用该证书时,您到底是什么意思?如果您告诉该计算机上的 Web 浏览器信任由 Ubuntu 系统生成的特定 snakeoil 证书,则在浏览器的证书管理界面中撤销该信任应该是一件简单的事情。

相关内容