簡體   English   中英

為什么我的 QuoVadis 證書在 Java 應用程序中無效?

[英]Why is my QuoVadis certificate not valid in a Java app?

我有 QuoVadis 簽署的服務器證書。 如果我使用瀏覽器訪問我的服務器,一切都很好,但如果我從 Java 應用程序或通過 NodeJS 腳本嘗試它,我會收到無法驗證我的證書路徑的問題?

是什么原因? 我的想法是,像 QuoVadis 或其他根 CA 等一些證書頒發機構包含在 Java 等中,不是嗎?

...像 QuoVadis 或其他根 CA 等認證機構包含在 Java 等中,不是嗎?

對於 Java,它會有所不同。 Oracle (formerly Sun) builds of Java by default use their own set of root CAs, in the file JRE/lib/security/cacerts which is installed as part of Java, but this file can be modified and Java processes (JVMs) or programs可以覆蓋默認值。 OpenJDK各不相同; 一些構建同樣默認為 cacerts,而一些默認為他們使用的平台提供的證書存儲,例如 Linux 或 MacOS。 你沒有說你使用什么 Java 和/或平台。

對於“等”,它的變化更大。 NodeJS 使用 OpenSSL,它同樣有一個默認值,可以依賴於構建和/或平台。 你沒有提供細節或任何線索其他的東西(?)是什么。

但是,更有可能這根本不是根證書 所有公共 CA,包括 QuoVadis,頒發最終實體或“葉”證書,需要使用至少一個中間證書或“鏈證書”進行驗證,有時甚至不止一個。 (全部)TLS 標准要求服務器發送這個鏈證書(或這些證書)作為握手的一部分,我見過的每個 CA 都給出了使用哪個鏈證書的說明,例如在這種情況下https:// support.quovadisglobal.com/kb/a469/understanding-the-trust-link-downloads-page.aspx 但是,由於許多服務器是由從不閱讀或遵循說明的人操作的,因此大多數主流瀏覽器都有變通辦法,即使服務器違反規則,它們也可以構建和驗證證書鏈。 Java 和 NodeJS/OpenSSL 客戶端(以及其他)不這樣做,因此如果服務器未能發送正確的鏈,它們將無法驗證。

如果這是一個公共 HTTPS服務器, https://www.ssllabs.com/ssltest會告訴您,除了(很多)有關 TLS 實施和配置的其他信息之外,服務器是否正在發送或缺少鏈證書. 對於其他服務器,還有其他工具,但我知道的那些需要用戶的一些想法或知識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM