第 3 章 高级 Red Hat Quay 部署
3.1. 使用 SSL 保护到 Red Hat Quay 的连接 复制链接链接已复制到粘贴板!
3.1.1. 使用 SSL 简介 复制链接链接已复制到粘贴板!
要使用 自签名证书 配置 Red Hat Quay,您需要创建一个证书颁发机构(CA),然后生成所需的密钥和证书文件。
以下示例假设您已使用 DNS 或其他命名机制配置了服务器主机名 quay-server.example.com,例如在 /etc/hosts 文件中添加条目:
$ cat /etc/hosts
...
192.168.1.112 quay-server.example.com
3.1.2. 创建证书颁发机构并签署证书 复制链接链接已复制到粘贴板!
在此过程结束时,您将分别具有名为 ssl.cert 和 ssl.key 的证书文件和主密钥文件。
3.1.2.1. 创建证书颁发机构 复制链接链接已复制到粘贴板!
生成 root CA 密钥:
$ openssl genrsa -out rootCA.key 2048生成 root CA 证书:
$ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem输入将融入到证书请求的信息,包括服务器主机名,例如:
Country Name (2 letter code) [XX]:IE State or Province Name (full name) []:GALWAY Locality Name (eg, city) [Default City]:GALWAY Organization Name (eg, company) [Default Company Ltd]:QUAY Organizational Unit Name (eg, section) []:DOCS Common Name (eg, your name or your server's hostname) []:quay-server.example.com
3.1.2.2. 签署证书 复制链接链接已复制到粘贴板!
生成服务器密钥:
$ openssl genrsa -out ssl.key 2048生成签名请求:
$ openssl req -new -key ssl.key -out ssl.csr输入将融入到证书请求的信息,包括服务器主机名,例如:
Country Name (2 letter code) [XX]:IE State or Province Name (full name) []:GALWAY Locality Name (eg, city) [Default City]:GALWAY Organization Name (eg, company) [Default Company Ltd]:QUAY Organizational Unit Name (eg, section) []:DOCS Common Name (eg, your name or your server's hostname) []:quay-server.example.com创建配置文件
openssl.cnf,指定服务器主机名,例如:openssl.cnf
[req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = quay-server.example.com IP.1 = 192.168.1.112使用配置文件生成证书
ssl.cert:$ openssl x509 -req -in ssl.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out ssl.cert -days 356 -extensions v3_req -extfile openssl.cnf
3.1.3. 使用 UI 配置 SSL 复制链接链接已复制到粘贴板!
本节使用 Quay UI 配置 SSL。要使用命令行界面配置 SSL,请参阅以下部分。
以配置模式启动
Quay容器:$ sudo podman run --rm -it --name quay_config -p 80:8080 -p 443:8443 registry.redhat.io/quay/quay-rhel8:v3.7.13 config secret-
在 Server Configuration 部分中,选择
Red Hat Quay 处理 TLS的 TLS。上传之前创建的证书和私钥文件,确保服务器主机名与创建证书时使用的值匹配。验证并下载更新的配置。 停止
Quay容器,然后重新启动 registry:$ sudo podman rm -f quay $ sudo podman run -d --rm -p 80:8080 -p 443:8443 \ --name=quay \ -v $QUAY/config:/conf/stack:Z \ -v $QUAY/storage:/datastorage:Z \ registry.redhat.io/quay/quay-rhel8:v3.7.13
3.1.4. 使用命令行配置 SSL 复制链接链接已复制到粘贴板!
配置 SSL 时的另一个选项是使用命令行界面。
将证书文件和主密钥文件复制到您的配置目录中,确保它们分别命名为
ssl.cert和ssl.key:$ cp ~/ssl.cert $QUAY/config $ cp ~/ssl.key $QUAY/config $ cd $QUAY/config编辑
config.yaml文件,并指定希望 Quay 处理 TLS:config.yaml
... SERVER_HOSTNAME: quay-server.example.com ... PREFERRED_URL_SCHEME: https ...停止
Quay容器并重启 registry:$ sudo podman rm -f quay $ sudo podman run -d --rm -p 80:8080 -p 443:8443 \ --name=quay \ -v $QUAY/config:/conf/stack:Z \ -v $QUAY/storage:/datastorage:Z \ registry.redhat.io/quay/quay-rhel8:v3.7.13
3.1.5. 使用命令行测试 SSL 配置 复制链接链接已复制到粘贴板!
使用
podman login命令尝试登录到启用了 SSL 的 Quay registry:$ sudo podman login quay-server.example.com Username: quayadmin Password: Error: error authenticating creds for "quay-server.example.com": error pinging docker registry quay-server.example.com: Get "https://quay-server.example.com/v2/": x509: certificate signed by unknown authorityPodman 不信任自签名证书。作为临时解决方案,使用
--tls-verify选项:$ sudo podman login --tls-verify=false quay-server.example.com Username: quayadmin Password: Login Succeeded!
后续小节中涵盖了将 Podman 配置为信任根证书颁发机构(CA)。
3.1.6. 使用浏览器测试 SSL 配置 复制链接链接已复制到粘贴板!
当您尝试访问 Quay registry 时,在这种情况下 ,https://quay-server.example.com,浏览器会警告潜在的风险:
继续登录屏幕,浏览器将通知您该连接不安全:
后续小节中涵盖了将系统配置为信任根证书颁发机构(CA)。
3.1.7. 配置 podman 信任证书颁发机构 复制链接链接已复制到粘贴板!
Podman 使用两个路径来定位 CA 文件,即 /etc/containers/certs.d/ 和 /etc/docker/certs.d/。
将 root CA 文件复制到这些位置之一,使用由服务器主机名确定的确切路径,并命名文件
ca.crt:$ sudo cp rootCA.pem /etc/containers/certs.d/quay-server.example.com/ca.crt或者,如果您使用 Docker,您可以将 root CA 文件复制到对应的 Docker 目录中:
$ sudo cp rootCA.pem /etc/docker/certs.d/quay-server.example.com/ca.crt
在登录到 registry 时,您应该不再需要使用 --tls-verify=false 选项:
$ sudo podman login quay-server.example.com
Username: quayadmin
Password:
Login Succeeded!
3.1.8. 将系统配置为信任证书颁发机构 复制链接链接已复制到粘贴板!
将 root CA 文件复制到合并的系统范围信任存储中:
$ sudo cp rootCA.pem /etc/pki/ca-trust/source/anchors/更新系统范围信任存储配置:
$ sudo update-ca-trust extract您可以使用
trust list命令来确保已经配置了 Quay 服务器:$ trust list | grep quay label: quay-server.example.com现在,当您访问位于
https://quay-server.example.com的 registry 时,锁定图标会显示连接的安全:
要从系统范围信任中删除 root CA,请删除该文件并更新配置:
$ sudo rm /etc/pki/ca-trust/source/anchors/rootCA.pem $ sudo update-ca-trust extract $ trust list | grep quay $
如需了解更多信息,请参见《 使用共享系统证书 "一章中的 RHEL 8 文档。