您好,登錄后才能下訂單哦!
本篇內容主要講解“私有安全docker registry授權訪問實驗分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“私有安全docker registry授權訪問實驗分析”吧!
服務器端:使用registry v2.1啟動容器。
客戶端:安裝了Docker的機器,準備pull/push操作
實驗條件:
registry端生成私鑰以及證書:
|
|
并啟動:
|
|
測試不安全的訪問:
docker端不存放證書。直接下載鏡像
|
|
提示錯誤:
Error response from daemon: unable to ping registry endpoint https://registry.test.com:5000/v0/ v2 ping attempt failed with error: Get https://registry.test.com:5000/v2/: x509: certificate signed by unknown authority v1 ping attempt failed with error: Get https://registry.test.com:5000/v1/_ping: x509: certificate signed by unknown authority
表示訪問的是安全倉庫,但是禁止訪問。同樣如果docker push的話也會提示:
The push refers to a repository [registry.test.com:5000/test-busybox] (len: 1) unable to ping registry endpoint https://registry.test.com:5000/v0/ v2 ping attempt failed with error: Get https://registry.test.com:5000/v2/: x509: certificate signed by unknown authority v1 ping attempt failed with error: Get https://registry.test.com:5000/v1/_ping: x509: certificate signed by unknown authority
這個時候可以開啟docker daemon的不安全訪問,即在/etc/defaults/docker文件里,找到DOCKER_OPT參數,在后面追加–insecure-registry registry.test.com:5000。并重啟docker daemon。
再次測試docker push 和 docker pull。成功。
此時測試:
|
|
提示禁止訪問:
curl: (60) SSL certificate problem: self signed certificate More details here: http://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.
如果使用-k 或者 –insecure參數的話可以訪問到registry的相應內容。
測試安全訪問,證書存放在/etc/docker/certs.d/registry.test.com:5000/下面。
實驗條件,首先使用scp命令將registry端前面生成的domain.crt拷貝到docker端。然后創建路徑:/etc/docker/certs.d/registry.test.com:5000/,并將domain.crt復制過去。
測試docker pull / docker push。可成功。說明此證書是即刻生效的。
如果將domain.crt從該路徑移走,docker pull / docker push失敗。
對于curl的測試:
curl -XGET方式提示禁止訪問
curl –insecure方式可訪問
而使用證書的訪問:
|
|
是成功的。
測試安全訪問,證書放在/usr/local/share/ca-certificate/domain.crt。
實驗條件,首先使用scp命令將registry端前面生成的domain.crt拷貝到docker端,然后再移動到路徑:/usr/local/share/ca-certificate/下。
此時進行docker push / docker pull是失敗的。需要更新證書。
使用命令更新證書:
|
|
現在再docker push / docker pull仍失敗。還需要重啟docker daemon。
重啟之后的docker push / docker pull是成功的。
測試curl,如果不帶證書的訪問,同樣可以正常訪問。
同樣,再移除了/usr/local/share/ca-certificate/domain.crt之后,更新update-ca-certificate之后,docker pull / docker push仍成功。
在重啟了docker daemon之后,docker push / docker pull失敗。
對于使用了SSL方式進行授權訪問的私有docker registry。對于它的訪問,有3種方式:
1. 修改docker daemon的配置,添加--insecure-registry ...的形式訪問。 2. 將證書拷貝到docker的certs.d路徑下,證書只對docker daemon生效,立即生效 3. 將證書拷貝到/usr/local/share/ca-certificate/....的路徑里,證書在更新update-ca-certificate之后全局生效,docker daemon需重啟
通過將擁有證書的一方視為可信的一方來授權訪問是沒有問題的。在這種形式里,雙方都認為對方是可信的。
但前面也提示了可以加–insecure參數進行不安全訪問,這表示docker端不在意registry是否可信,而registry端也并不阻攔docker端的訪問。這樣安全性就降低了很多。
通過update-ca-certificates的man page可以了解到,
它會更新/etc/ssl/certs,并讀取/etc/ca-certificates.conf,這個文件中每行都是在/usr/share/ca-certificates的文件都是可信的。
而在/usr/local/share/ca-certificates下的.crt文件也視作可信
一般ca-certificate路徑有:
/etc/ca-certificates /usr/share/ca-certificates /usr/share/doc/ca-certificates /usr/local/share/ca-certificates
到此,相信大家對“私有安全docker registry授權訪問實驗分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。