Docker レジストリの基本を理解したので、自己署名 SSL 証明書を生成してセキュリティを確保しましょう。この証明書により、レジストリとの HTTPS 通信が可能になります。
自己署名証明書は、信頼できる認証局 (CA) によって署名されていない SSL 証明書です。パブリックインターネットに公開されている本番環境には適していませんが、自己署名証明書は、開発、テスト、および内部アプリケーションに最適です。
-
証明書を保存するためのディレクトリを作成します。
mkdir -p ~/project/registry-certs
cd ~/project/registry-certs
-
秘密鍵を生成します。
openssl genrsa -out registry.key 2048
このコマンドは、2048 ビット RSA 秘密鍵を生成します。成功した場合、出力は表示されません。
-
秘密鍵を使用して、証明書署名要求 (CSR) を作成します。
openssl req -new -key registry.key -out registry.csr
証明書に含める情報を入力するように求められます。
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
Locality Name (eg, city) []:San Francisco
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Company
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:admin@example.com
注:Common Name には、ローカルマシンでレジストリに接続するため、localhost を入力します。
また、以下も尋ねられます。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Enter キーを押して、これらを空白のままにすることができます。
-
CSR を使用して、自己署名証明書を生成します。
openssl x509 -req -days 365 -in registry.csr -signkey registry.key -out registry.crt
このコマンドは、365 日間有効な自己署名証明書を作成します。
次のような出力が表示されるはずです。
Signature ok
subject=C = US, ST = California, L = San Francisco, O = Example Company, OU = IT, CN = localhost, emailAddress = admin@example.com
Getting Private key
-
証明書とキーファイルが作成されたことを確認します。
ls -l
3 つのファイルが表示されるはずです。
total 12
-rw-r--r-- 1 labex labex 1220 [date] registry.crt
-rw-r--r-- 1 labex labex 1054 [date] registry.csr
-rw-r--r-- 1 labex labex 1679 [date] registry.key
これで、Docker レジストリを保護するために必要なファイルが揃いました。次のステップでは、HTTPS 通信にこの証明書を使用するようにレジストリを構成します。