设置证书

本文档提供了使用自定义根证书颁发机构的脚本和使用弹性负载平衡(ELB)证书的过程。

使用自定义根CA

任何添加到以下路径的有效证书都将受到CircleCI服务的信任:usr /地方/分享/ ca证书

下面的例子openssl命令是放置证书的一种方式。也可以从您公司内的vault/PKI解决方案中提取证书。188bet娱乐官网

一些安装环境使用内部根证书颁发机构(RCAs)在服务器之间加密和建立信任。如果使用的是客户根证书,则需要在CircleCI GitHub企业实例中将其导入并标记为受信任的证书。金宝博娱乐官网网址CircleCI在与GitHub和webhook API调用通信时会尊重这种信任。

CA证书必须采用Java密钥存储库能够理解的格式,并包括整个链。

下面的脚本提供了必要的步骤:

从您的GitHub企业部署中获取CA链。金宝博娱乐官网网址${GHE_DOMAIN}:443 -showcerts < /dev/null | sed -ne '/-开始证书-/,/-结束证书-/p' > /usr/local/share/ca-certificates/ghe.crt

然后,导航到位于端口8800的系统控制台,并将协议更改为upgrade。您可以将协议更改为HTTPS (TLS/SSLEnabled)设置并重新启动服务。当尝试测试GitHub身份验证时,现在应该会成功,而不是x509相关的错误。

设置ELB证书

CircleCI需要以下步骤来获得作为主证书的ELB证书。完成此任务的步骤如下。您将需要ELB和CircleCI服务器的证书,如下面的部分所述。

打开HTTP请求的端口将允许CircleCI返回一个HTTPS重定向。
从服务器v2.19.02起,经典负载平衡器(CLB)不再受支持。
  1. 打开ELB上的以下端口:

    负载均衡器的协议 负载平衡器端口 实例的协议 实例的端口 密码 SSL证书

    HTTP

    80

    HTTP

    80

    N/A

    N/A

    SSL

    443

    SSL

    443

    改变

    your-cert

    SSL

    3000

    SSL

    3000

    改变

    your-cert

    HTTPS

    8800

    HTTPS

    8800

    改变

    your-cert

    SSL

    8081

    SSL

    8081

    改变

    your-cert

    SSL

    8082

    SSL

    8082

    改变

    your-cert

  2. 在您的ELB上添加以下安全组:

    下面的源保持打开状态,以便任何人都可以通过这些端口范围访问实例。如果这不是你想要的,那么你可以自由地限制它们。如果涉众使用源范围之外的IP地址,用户将会体验到功能的减少。
    类型 协议 端口范围

    SSH

    TCP

    22

    0.0.0.0

    HTTPS

    TCP

    443

    0.0.0.0

    自定义TCP规则

    TCP

    8800

    0.0.0.0

    自定义TCP规则

    TCP

    64535 - 65535

    0.0.0.0

  3. 接下来,在CircleCI的管理控制台中,将一个有效的证书和密钥文件上载到隐私部分。这些证书不需要外部签名,甚至不需要当前证书,因为实际的证书管理是在ELB完成的。但是,要使用HTTPS请求,CircleCI需要一个证书和密钥,其中的“Common Name (FQDN)”与在管理控制台中配置的主机名匹配。

  4. 现在可以将GitHub授权回调设置为https而不是http

使用自签名证书

因为ELB不需要a当前的证书,您可以选择生成一个具有任意持续时间的自签名证书。

  1. 使用openssl命令生成证书和密钥openssl req -newkey rsa:2048 -节点-keyout密钥。pem -x509 - 1天的认证

  2. 为提示提供适当的信息。

    提供的公共名称必须与在CircleCI中配置的主机匹配。
  3. 保存证书。pem和关键。pem文件在本地。

在CircleCI服务器上设置TLS/HTTPS

您可以使用各种解决方案来生成有效的SSL证书和密钥文件。下面提供了两种解决方案。

使用Certbot

本节介绍使用Certbot在服务器安装上通过手动向服务机器添加一个DNS记录集来设置TLS/HTTPS。Certbot通常通过端口80或443来验证DNS记录,但是由于端口冲突,在2.2.0的CircleCI服务器安装上不支持这一点。

  1. 停止服务CircleCI服务器管理控制台(< circleci-hostname > com: 8800)。

  2. 通过SSH连接到服务机器。

  3. 安装Certbot并使用以下命令生成证书:

    sudo apt-get update sudo apt-get install softwinproperty -common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot certbot certonly -manual -preferred-challenges dns
  4. 您将被指示添加一个DNS TXT记录。

  5. 成功生成记录后,保存fullchain.pemprivkey.pem本地。

如果您使用Route 53作为您的DNS记录,添加一个TXT记录是很简单的。在创建新记录集时,请确保选择type→TXT并提供用引号括起来的适当值。

将证书添加到CircleCI服务器

一旦您有了有效的证书和密钥文件.pem格式,您必须上传它到CircleCI服务器。

  1. 为此,导航到主机名:8800 /控制台设置

  2. 在“私隐”部分,勾选“只使用SSL(推荐)”

  3. 上传您新生成的证书和密钥

  4. 点击“验证TLS设置”以确保一切正常

  5. 点击设置页面底部的“保存”,当提示时重新启动

更多信息请参看在这里

确保从管理控制台正确配置了主机名(< circleci-hostname > com: 8800)所使用的主机名与与TLS证书相关联的DNS记录相匹配。

确保GitHub/GHE中的认证回调URL与指向服务机器的域名相匹配,例如包括使用的协议https: / / info-tech.io /