web-dev-qa-db-ja.com

Gitlab-CIランナー:自己署名証明書を無視する

gitlab-ci-multi-runner register

私にくれた

couldn't execute POST against https://xxxx/ci/api/v1/runners/register.json:
Post https://xxxx/ci/api/v1/runners/register.json: 
x509: cannot validate certificate for xxxx because it doesn't contain any IP SANs

証明書の検証を無効にする方法はありますか?

Gitlab 8.13.1とgitlab-ci-multi-runner 1.11.2を使用しています。

16
Etienne Gautier

Wassimの答え、および tls-自己署名証明書とカスタムCA署名証明書に関するgitlabのドキュメント に基づいて、gitlabサーバーの管理者ではなく、ランナー(およびランナーがルートとして実行されている場合):

SERVER=gitlab.example.com
PORT=443
CERTIFICATE=/etc/gitlab-runner/certs/${SERVER}.crt

# Create the certificates hierarchy expected by gitlab
Sudo mkdir -p $(dirname "$CERTIFICATE")

# Get the certificate in PEM format and store it
openssl s_client -connect ${SERVER}:${PORT} -showcerts </dev/null 2>/dev/null | sed -e '/-----BEGIN/,/-----END/!d' | Sudo tee "$CERTIFICATE" >/dev/null

# Register your runner
gitlab-runner register --tls-ca-file="$CERTIFICATE" [your other options]

更新1:証明書は正しい場所の絶対パスである必要があります。

更新2gitlab bug#2675 のため、カスタムCA署名で失敗する可能性があります

24
liberforce

私の場合、次のように.pemファイルにパスを追加することで機能しました。

Sudo gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem
7
Luiz Dias

[OK]を私はこの投稿をステップバイステップで行った http://moonlightbox.logdown.com/posts/2016/09/12/gitlab-ci-runner-register-x509-error チャーム。リンク切れを防ぐために、以下の手順をコピーします。

最初にGitLabサーバー(ランナーではない)でSSL構成を編集します

vim /etc/pki/tls/openssl.cnf

[ v3_ca ]
subjectAltName=IP:192.168.1.1 <---- Add this line. 192.168.1.1 is your GitLab server IP.

自己署名証明書を再生成する

cd /etc/gitlab/ssl
Sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/gitlab/ssl/192.168.1.1.key -out /etc/gitlab/ssl/192.168.1.1.crt
Sudo openssl dhparam -out /etc/gitlab/ssl/dhparam.pem 2048
Sudo gitlab-ctl restart

新しいCAをGitLab CIランナーにコピーします

scp /etc/gitlab/ssl/192.168.1.1.crt [email protected]:/etc/gitlab-runner/certs

ありがとう@Moon Light @Wassim Dhif

6
Etienne Gautier

私の設定では、以下も同様に機能しました。証明書の作成に使用されるIP/Nameがランナーの登録に使用されるIP/Nameと一致することが重要です。

gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem

さらに、ホスト名検索用の行をランナーのconfig.tomlファイルにも追加する必要があります(セクション[runners.docker]):extra_hosts = ["git.domain.com:192.168.99.100"] see also https://gitlab.com/gitlab -org/gitlab-runner/issues/2209

さらに、gitlab/gitlab-runnerのネットワークモードホストを使用している場合、config.tomlにも追加する必要があり、追加のコンテナーが起動するため、ネットワークトラブルが発生する可能性があります。 gitlab-Hostに接続します((セクション[runners.docker]):network_mode="Host"

最後に、自己署名SSL-Certに問題がある可能性があります( https://gitlab.com/gitlab-org/gitlab-runner/issues/2659 )。汚い回避策は、[[runners]]セクションにenvironment = ["GIT_SSL_NO_VERIFY=true"]を追加することです。

4
jfreundo

現在、安全でないsslオプションでマルチランナーを実行する可能性はありません。

現在、GitLabで未解決の問題があります。

それでも、証明書を取得し、それをPEMファイルにして、--tls-ca-fileを使用してランナーコマンドに渡すことができるはずです。

PEMファイルを作成するには、opensslを使用します。
openssl x509 -in mycert.crt -out mycert.pem -outform PEM

4
Wassim Dhif

次の手順は私の環境で機能しました。 (Ubuntu)

証明書のダウンロード
gitlabサーバーにアクセスできませんでした。したがって、

  1. ブラウザで https://some-Host-gitlab.com を開きます(私はchromeを使用しています)。
  2. サイト情報を表示します。通常はURLバーに緑色のロックがあります。
  3. 証明書情報に移動して証明書をダウンロード/エクスポートします(クロム、Firefoxにはこのオプションがあります)

gitlab-runnerホストで

  1. ダウンロードした証明書の名前を.crtに変更します

    $ mv some-Host-gitlab.com some-Host-gitlab.com.crt

  2. このファイルにランナーを登録してください

    $ Sudo gitlab-runner register --tls-ca-file /path/to/some-Host-gitlab.com.crt

ランナーをプロジェクトに登録できました。

2
New Chethan