在OpenShift Origin 3.6中,使用高级安装方法,我为Web控制台和路由器配置了自定义TLS证书。
对于Web控制台,我在Ansible清单中使用的参数是:
openshift_master_named_certificates=[{"certfile": "/root/star.paas.certs/star.paas.local.cert.pem", "keyfile": "/root/star.paas.certs/star.paas.local.key.pem", "names": ["master.paas.local"], "cafile": "/root/star.paas.certs/ca-chain.cert.pem"}]
openshift_master_overwrite_named_certificates=true
对于路由器,参数是:
openshift_hosted_router_certificate={"certfile": "/root/star.paas.certs/star.paas.local.cert.pem", "keyfile": "/root/star.paas.certs/star.paas.local.key.pem", "cafile": "/root/star.paas.certs/ca-chain.cert.pem"}
在TLS证书方面,已创建自定义证书颁发机构并将其保存到文件ca-chain.cert.pem。并且已生成基于此CA的自定义证书(star.paas.local.key.pem
和star.paas.local.cert.pem
)。
您可能已经注意到,我对OpenShift Web控制台使用相同的证书链(在master.paas.local:8443
处提供)和嵌入式路由器(对于路由为https://*.paas.local
的应用程序)。< / p>
然后,当我想访问Web控制台时,先决条件是将根CA导入我的浏览器。
关键是:当我使用Chromium并转到master.paas.local:8443
时,连接被视为不安全(NET :: ERR_CERT_AUTHORITY_INVALID)。当我要求更多信息时,我注意到证书层次结构不完整:
Certificate details in Chromium
有趣的是,这不会发生在Firefox中,这是我所知道的唯一符合预期行为的浏览器:
Certificate details in Firefox
相反,OpenShift为我的应用程序提供的所有TLS安全公共路由被我测试的所有浏览器都认为是安全的,其证书链与我用于Web控制台的证书链完全相同。
在所有现代浏览器中提供Web控制台时,是否有一种工作方式可以使openshift(-ansible)考虑我的自定义CA? 在我看来,OpenShift Web控制台在TLS握手期间不会发送根/中间CA.
答案 0 :(得分:0)
ansible playbook似乎支持为named_certificates提供cafile,并放置文件。但是,正在运行的系统不支持cafile键,因此会被忽略。如果您将certfile作为完整包(bundle + cert)提供,那么它应该开始工作。