由於服務端設置了https訪問,因此如果通過瀏覽器訪問時會提示證書不被信任,但是仍然可以通過處理繼續訪問.但是在自動化環境中,都是通過命令來請求的,這樣不受信任的https就會報錯誤,這樣我們就要像docker服務器一樣添加對自簽證書的信任.前兩部分我們分別在docker推送鏡像和拉取鏡像時添加了信任證書操作.但是都是基於linux的,在自動化環境中,可能有的節點是windows節點,我們這一節來看下如何在windows環境下添加自簽證書信任.
我們先來看一下如果沒有添加證書信任的情況下通過命令請求的結果是什么樣子的
C:\Users\tyler>curl https://192.168.124.43:8443/
curl: (77) schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.
C:\Users\tyler>
可以看到,請求失敗,提示的錯誤信息是證書不被信任.
由於我的windows測試機上安裝了curl因此會出現curl命令,如果你沒有安裝則會出現curl不是一個命令的錯誤.如果不想裝curl可以通過powershell來請求,具體操作如下
PS C:\Users\tyler> Invoke-WebRequest https://192.168.124.43:8443/
Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure
channel.
At line:1 char:1
+ Invoke-WebRequest https://192.168.124.43:8443/
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
eption
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
PS C:\Users\tyler>
可以看到,沒有添加信任通過命令請求就會返回錯誤.下面我們講下如何在windows環境下添加自簽證書信任
保存證書
首先,打開cmd,cd到一個自已便於記的目錄,然后執行命令keytool -printcert -sslserver 192.168.124.43:8443 -rfc >nexus.crt
前面已經說過要執行keytool命令需要正確配置java,如果仍然無法執行,可以從java安裝目錄里找到
keytool.exe
,以上命令的keytool換成keytoolexe
的完整路徑.
- 在cmd里輸入mmc命令,這時候會彈出一個界面
如果你看到頁面里面的內容沒有上面的多,也不用擔心,因為這個狀態並非初始狀態.
- 執行文件-添加/刪除管理節點
- 從左邊找到"證書"然后點擊"添加"
在以上操作過程中會出現一個選擇,默認選擇當前用戶即可.
以上操作完以后點擊確定.然后展開左側的證書,並執行以下操作
點擊導入就會出現一個選擇對話框,這時候找到我們剛才保存的nexus.crt文件導入.最后會出現一個警示,這時候選擇確定.而不是取消.
這時候,如果關閉主界面的時候會提示是否保存設置,這里取消即可.證書信任已經保存.
這個時候我們再執行curl
或者powershell invoke-webrequest
,即可以年到如下信息
>curl https://192.168.124.43:8443/
<!DOCTYPE html>
<html lang="en">
<head>
<title>Nexus Repository Manager</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="description" content="Nexus Repository Manager"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
...
由於內容太長,這里就不再輸完整的了.