Ubuntu

無法驗證第一個證書(Comodo EssentialSSL 萬用字元)

  • June 28, 2019

我是設置 SSL 證書和使用伺服器的新手,所以在我嘗試解釋我自己所處的情況時,請多多包涵。

我最近獲得了 Comodo EssentialSSL 萬用字元許可證,該許可證將用於保護我的伺服器。我正在配置的伺服器用於 Kolab。Kolab 正在工作,但沒有配置 SSL,所以我想我可以設置它。我按照相應 Kolab 操作指南頁面 ( https://docs.kolab.org/howtos/secure-kolab-server.html ) 上提供的說明進行操作,但卡在了設置 cyrus-IMAP 伺服器的部分。

執行時:

openssl s_client -showcerts -connect example.org:993

我得到以下輸出(截斷):

CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.example.org
  i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
-----BEGIN CERTIFICATE-----

...

-----END CERTIFICATE-----
---
Server certificate
subject=/OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.example.org
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
---
No client certificate CA names sent
---
SSL handshake has read 2019 bytes and written 421 bytes
---
...

   Start Time: 1502097786
   Timeout   : 300 (sec)
   Verify return code: 21 (unable to verify the first certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=PLAIN AUTH=LOGIN SASL-IR] example.org Cyrus IMAP git2.5+0-Debian-2.5~dev2015021301-0~kolab2 server ready

如果我將 -CApath 指定給證書,它確實可以工作並且我得到驗證返回碼:0(ok),但前提是我在通過 ssh 登錄到伺服器時執行命令。在 Thunderbird 上設置我的郵件時,我可以訪問我的郵箱,但必須首先添加一個安全例外,因為證書具有“未知身份”。但是,該證書在 https 的 443 埠上可以完美執行,而無需指定 -CApath。

任何幫助將不勝感激。

我通過檢查我的中間封包件的順序是否正確格式化並將其從 .ca-bundle 更改為 .pem 並將以下行添加到我的 imapd.conf 來解決問題:

tls_ca_path: /etc/ssl/certs

如果您收到以下錯誤 while openssl s_client -showcerts -connect example.com:443

驗證錯誤:num=20:無法獲取本地頒發者證書

您需要確保包含CA 的捆綁證書。

當 Comodo CA 頒發 SSL 證書時,它會發送特定的 Comodo CA 中間證書捆綁包,以便與它一起安裝。這些證書創建了所謂的證書鏈。最終使用者證書是使用其中一個中間體簽名的,該中間體是使用其中一個根簽名的。當瀏覽器到達網站時,它會嘗試建構證書鏈並將其提供的 SSL 證書連結回其信任儲存中的根之一。

確保您已從證書提供商處下載了這些文件。

最方便的方法(特別是對於Nginx)是將它們全部合併為一個,例如通過將 CA Bundle 附加到主 CRT 中:

$ cat STAR_example_com.ca-bundle > STAR_example_com.crt

如果您沒有單個.ca-bundle文件(CA Bundle),而是多個文件,請將它們合併為一個。

然後STAR_example_com.crt照常安裝。Nginx 的範例:

ssl_certificate /etc/nginx/ssl/STAR_example_com.crt;
ssl_certificate_key /etc/nginx/ssl/STAR_example_com.key;

引用自:https://serverfault.com/questions/867734