我正在 Ubuntu 16.04 LTS 伺服器上為 Web 伺服器設定 nginx 反向代理。
Ubuntu 上將執行三種不同的服務。服務將使用 API 呼叫相互通訊。同樣,客戶端(瀏覽器/行動裝置)將使用 API 呼叫來通訊服務。
為了驗證客戶端 SSL 請求,我需要在伺服器 PC 上安裝憑證。身份驗證後,只有請求將被處理或轉發以進一步處理。
每項服務我都有以下格式檔案的憑證。 Ser1_cert.crt、Ser1_key-decryp.key、Ser1_keyfile.key、Ser1_exported.pfx
lly Ser2_..., Ser3_... files are available
對於CA,我有CA_50EA.crt,CA_50EA.pfx檔案可用
我不清楚我應該使用哪種憑證檔案格式來安裝憑證。
要在系統上安裝證書,我遵循以下步驟。 1.我將.crt擴充檔(包括CA檔)複製到/usr/share/ca-certificates
然後執行以下命令。 2.sudo dpkg-reconfigure ca-certificates
它顯示了選擇證書的使用者介面,我選擇了全部。最後顯示的是沒有。新增的證書數量。
我將證書路徑正確放入 nginx.conf 檔案中。我分別將.crt
和.key
文件複製到/etc/ssl/certs/
和。/etc/ssl/private/
ssl_certificate "/etc/pki/certs/XServer_certificate.crt"; ssl_certificate_key "/etc/ssl/private/XServer_decryp.key";
現在,我嘗試從瀏覽器用戶端登入伺服器,但登入憑證驗證失敗,並顯示以下伺服器日誌訊息。
info: LoginController[0]
Certification Error :unable to get local issuer certificate
為了再次確認,我將所有憑證檔案複製到/usr/share/ca-certificates
目錄中(總共14個檔案),然後再次執行sudo dpkg-reconfigure ca-certificates
.這次也遇到同樣的錯誤。
下次我運行sudo update-ca-certificates --fresh
命令時它顯示沒有。安裝的證書帶有 ca.pem 檔案警告,如下所示。
WARNING: CA_50EA.pem does not contain a certificate or CRL: skipping 152 added, 0 removed; done.
.pem 檔案是在/etc/ssl/certs
資料夾中建立的,但我只輸入了 .crt 檔案/usr/share/ca-certificates
我嘗試使用下面的命令進行驗證,我也看到了與下面相同的問題。
openssl s_client -connect [server name]:443 -showcerts -CAfile /etc/ssl/certs/ca-certificates.crt
................. ................. Verify return code: 21 (unable to verify the first certificate)
它非常明確地告訴我們驗證失敗。
我缺少的任何步驟,執行此操作的正確方法是什麼。透過看到錯誤,我認為 CA 沒有正確安裝。
我讀了很多博客,其中大多數都解釋了相同的內容,但這對我不起作用。
在我使用 CentOS7 之前的一段時間,我使用以下命令在系統上安裝憑證。 update-ca-trust 強制啟用、update-ca-trust 提取 在 CentOS 用戶端中,使用上述指令進行憑證驗證效果很好。
如有任何回饋,我們將不勝感激。
謝謝
答案1
首先謝謝大家,
我的問題是:在 CentOS 中成功安裝的 CA 證書,在 Ubuntu 16 Server 中未安裝相同的證書,給予以下警告訊息。警告:CA_50EA.pem 不包含憑證或 CRL:跳過 152 添加,0 刪除;完畢。
解決方案:經過不同的處理,無法找出該問題的確切根本原因。突然靈機一動,解決了我的問題。
使用以下 URL 步驟從 CA.pfx 檔案建立新的根 CA,它成功安裝在 Ubuntu 16 Server 中,沒有任何警告,並成功驗證了我的用戶端請求。 https://www.itsupportmiami.com/how-to-convert-a-pfx-to-a-seperate-key-crt-file/
謝謝大家觀看我的提問並嘗試回答。