第 3 章 高级 Red Hat Quay 部署
使用以下部分配置高级 Red Hat Quay 设置。
3.1. 使用 SSL/TLS 复制链接链接已复制到粘贴板!
要使用 自签名证书 配置 Red Hat Quay,您必须创建一个证书颁发机构(CA),然后生成所需的密钥和证书文件。
以下示例假设您已使用 DNS 或其他命名机制配置了服务器主机名 quay-server.example.com
,例如在 /etc/hosts
文件中添加条目:
cat /etc/hosts ... 192.168.1.112 quay-server.example.com
$ cat /etc/hosts
...
192.168.1.112 quay-server.example.com
3.1.1. 创建证书颁发机构并签署证书 复制链接链接已复制到粘贴板!
使用以下步骤创建证书文件和名为 ssl.cert
和 ssl.key
的主密钥文件。
3.1.1.1. 创建证书颁发机构 复制链接链接已复制到粘贴板!
使用以下步骤创建证书颁发机构(CA)
流程
输入以下命令生成 root CA 密钥:
openssl genrsa -out rootCA.key 2048
$ openssl genrsa -out rootCA.key 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令生成 root CA 证书:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
$ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入将融入到证书请求中的信息,包括服务器主机名,例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.1.2. 签署证书 复制链接链接已复制到粘贴板!
使用以下步骤为证书签名。
流程
输入以下命令生成服务器密钥:
openssl genrsa -out ssl.key 2048
$ openssl genrsa -out ssl.key 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令生成签名请求:
openssl req -new -key ssl.key -out ssl.csr
$ openssl req -new -key ssl.key -out ssl.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入将融入到证书请求中的信息,包括服务器主机名,例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置文件
openssl.cnf
,指定服务器主机名,例如:openssl.cnf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用配置文件生成证书
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
$ openssl x509 -req -in ssl.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out ssl.cert -days 356 -extensions v3_req -extfile openssl.cnf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.2. 使用 Red Hat Quay UI 配置 SSL/TLS 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay UI 配置 SSL/TLS。
要使用命令行界面配置 SSL,请参阅"使用命令行界面配置 SSL/TLS"。
前提条件
- 您已创建了证书颁发机构并签署证书。
流程
以配置模式启动
Quay
容器:sudo podman run --rm -it --name quay_config -p 80:8080 -p 443:8443 registry.redhat.io/quay/quay-rhel8:v3.8.15 config secret
$ sudo podman run --rm -it --name quay_config -p 80:8080 -p 443:8443 registry.redhat.io/quay/quay-rhel8:v3.8.15 config secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 Server Configuration 部分中,选择 Red Hat Quay handle TLS for SSL/TLS。上传之前创建的证书文件和私钥文件,确保 Server Hostname 与创建证书时使用的值匹配。
- 验证并下载更新的配置。
输入以下命令停止
Quay
容器,然后重启 registry:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. 使用命令行界面配置 SSL 复制链接链接已复制到粘贴板!
使用以下步骤使用命令行界面配置 SSL/TLS。
前提条件
- 您已创建了证书颁发机构并签署证书。
流程
将证书文件和主密钥文件复制到您的配置目录中,确保它们分别命名为
ssl.cert
和ssl.key
:cp ~/ssl.cert ~/ssl.key $QUAY/config
cp ~/ssl.cert ~/ssl.key $QUAY/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令进入
$QUAY/config
目录:cd $QUAY/config
$ cd $QUAY/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
config.yaml
文件,并指定您希望 Red Hat Quay 处理 TLS/SSL:config.yaml
... SERVER_HOSTNAME: quay-server.example.com ... PREFERRED_URL_SCHEME: https ...
... SERVER_HOSTNAME: quay-server.example.com ... PREFERRED_URL_SCHEME: https ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:输入以下命令将 rootCA.pem 文件的内容应用到 ssl.cert 文件的末尾:
cat rootCA.pem >> ssl.cert
$ cat rootCA.pem >> ssl.cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令停止
Quay
容器:sudo podman stop quay
$ sudo podman stop quay
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令重启 registry:
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.8.15
$ 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.8.15
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.4. 使用命令行测试 SSL 配置 复制链接链接已复制到粘贴板!
使用
podman login
命令,尝试使用启用 SSL 登录 Quay registry:sudo podman login quay-server.example.com
$ 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 authority
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman 不信任自签名证书。作为临时解决方案,使用
--tls-verify
选项:sudo podman login --tls-verify=false quay-server.example.com
$ sudo podman login --tls-verify=false quay-server.example.com Username: quayadmin Password: Login Succeeded!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续小节中介绍了如何将 Podman 配置为信任根证书颁发机构(CA)。
3.1.5. 使用浏览器测试 SSL 配置 复制链接链接已复制到粘贴板!
当您尝试访问 Quay registry 时,本例中为 https://quay-server.example.com
,浏览器会警告潜在的风险:
继续进行登录屏幕,浏览器会通知您连接不安全:
后续小节中介绍了如何将系统配置为信任根证书颁发机构(CA)。
3.1.6. 配置 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
$ sudo cp rootCA.pem /etc/containers/certs.d/quay-server.example.com/ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果使用 Docker,您可以将 root CA 文件复制到等效的 Docker 目录中:
sudo cp rootCA.pem /etc/docker/certs.d/quay-server.example.com/ca.crt
$ sudo cp rootCA.pem /etc/docker/certs.d/quay-server.example.com/ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在登录到 registry 时,您应该不再需要使用 --tls-verify=false
选项:
sudo podman login quay-server.example.com
$ sudo podman login quay-server.example.com
Username: quayadmin
Password:
Login Succeeded!
3.1.7. 将系统配置为信任证书颁发机构 复制链接链接已复制到粘贴板!
使用以下步骤将系统配置为信任证书颁发机构。
流程
输入以下命令将
rootCA.pem
文件复制到整合的系统范围信任存储中:sudo cp rootCA.pem /etc/pki/ca-trust/source/anchors/
$ sudo cp rootCA.pem /etc/pki/ca-trust/source/anchors/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令更新系统范围的信任存储配置:
sudo update-ca-trust extract
$ sudo update-ca-trust extract
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。您可以使用
trust list
命令确保已配置了Quay
服务器:trust list | grep quay
$ trust list | grep quay label: quay-server.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,当您浏览
https://quay-server.example.com
中的 registry 时,锁定图标会显示连接是安全的:要从系统范围的信任中删除
rootCA.pem
文件,请删除该文件并更新配置:sudo rm /etc/pki/ca-trust/source/anchors/rootCA.pem
$ sudo rm /etc/pki/ca-trust/source/anchors/rootCA.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo update-ca-trust extract
$ sudo update-ca-trust extract
Copy to Clipboard Copied! Toggle word wrap Toggle overflow trust list | grep quay
$ trust list | grep quay
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如需更多信息,请参阅 使用共享系统证书的 章节中的 RHEL 8 文档。