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を使用しています。
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:証明書は正しい場所の絶対パスである必要があります。
更新2: gitlab bug#2675 のため、カスタムCA署名で失敗する可能性があります
私の場合、次のように.pemファイルにパスを追加することで機能しました。
Sudo gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem
[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
私の設定では、以下も同様に機能しました。証明書の作成に使用される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"]
を追加することです。
現在、安全でないsslオプションでマルチランナーを実行する可能性はありません。
現在、GitLabで未解決の問題があります。
それでも、証明書を取得し、それをPEMファイルにして、--tls-ca-file
を使用してランナーコマンドに渡すことができるはずです。
PEMファイルを作成するには、opensslを使用します。openssl x509 -in mycert.crt -out mycert.pem -outform PEM
次の手順は私の環境で機能しました。 (Ubuntu)
証明書のダウンロード
gitlabサーバーにアクセスできませんでした。したがって、
gitlab-runnerホストで
ダウンロードした証明書の名前を.crtに変更します
$ mv some-Host-gitlab.com some-Host-gitlab.com.crt
このファイルにランナーを登録してください
$ Sudo gitlab-runner register --tls-ca-file /path/to/some-Host-gitlab.com.crt
ランナーをプロジェクトに登録できました。