Теперь, когда мы понимаем основы Docker Registry, давайте защитим его, сгенерировав самозаверяющий SSL-сертификат. Этот сертификат включит связь HTTPS с нашим реестром.
Самозаверяющий сертификат — это SSL-сертификат, который не подписан доверенным центром сертификации (CA). Хотя самозаверяющие сертификаты не подходят для производственных сред, доступных в публичном интернете, они идеально подходят для разработки, тестирования и внутренних приложений.
Мы будем использовать OpenSSL, широко используемый набор инструментов для криптографии, для создания нашего сертификата:
-
Создайте каталог для хранения наших сертификатов:
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
Вы должны увидеть три файла:
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.