
Windows XP 繼續使用 Ubuntu 隨附的蛇油證書,儘管事實上它從未在任何虛擬主機中使用過。
該證書位於
/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。在該伺服器的生命週期中,從未使用過任何其他憑證來保護 Web 流量,更不用說蛇油憑證了。 Windows Vista 及更高版本,以及 OSX 和我測試過的所有 Linux 發行版都使用正確的憑證。 Windows XP 使用蛇油憑證(在 IE 中。該虛擬機器上沒有其他瀏覽器)。以下是一些螢幕截圖:
答案1
鑑於您提供的額外信息,我可能更容易開始另一個答案。
虛擬「snakeoil」憑證似乎並未提供給 Windows 用戶端。產生的「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
...
我相信正在發生的事情是您已經將您的網頁伺服器配置為使用伺服器名稱指示擴大。此擴充功能旨在讓伺服器根據客戶端想要連接的主機名稱提供不同的憑證。
這在大多數現代瀏覽器中運作正常,但在 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 系統產生的特定蛇油證書,那麼撤銷瀏覽器證書管理介面中的信任應該是一件簡單的事情。