Jenkins が Git リポジトリのインポート中に「要求されたターゲットへの有効な証明書パスが見つかりません」というエラーを表示する 質問する

Jenkins が Git リポジトリのインポート中に「要求されたターゲットへの有効な証明書パスが見つかりません」というエラーを表示する 質問する

私は構築しようとしていますGitリポジトリジェンキンスからJenkins Git プラグイン私のラップトップで。Git リポジトリは、自己署名証明書を持つ会社の信頼できるサーバー上にあります。URL を指定すると、常にエラーが発生します。

Failed to connect to repository : sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target

このエラーは自己署名証明書が原因で発生することは理解していますが、サーバーは私の会社のものであり、認証機関によって署名されています。

また、自己署名を使用して別のラップトップから同じリポジトリをインポートしようとしましたが、同じエラーが発生し続けます。

ご協力いただければ幸いです

ベストアンサー1

このエラーは、Java 仮想マシンによって報告される一般的なエラー メッセージです。これは、Java 環境に、有効な Web サイトであることを確認するための HTTPS サーバーに関する情報がない場合に発生します。証明書は、内部ルート CA によって提供される場合もあれば、自己署名証明書である場合もあります。これらの証明書を提供できるのは Java の「信頼済み」リストに含まれていないため、JVM が混乱することがあります。

証明書が「有効」であることがわかっているため、この証明書を JVM に直接インポートできます。そうすることで、JVM に、これは「信頼できる」証明書であり、証明書に関する問題は「無視」するように指示します。

証明書を Java 証明機関ファイルに追加する必要があります。Debian/Ubuntu Linux マシンの場合、通常は次の場所にあります。

$JAVA_HOME/jre/lib/security/cacerts

ただし、JRE によって上書き/書き換えられるため、JRE cacert キーストアに追加することは望ましくありません。そのため、このファイルを Jenkins 用に複製することをお勧めします。

  • $JAVA_HOME- これは、現在の Java ホームがある場所になります。Java Runtime Environment (JRE) のみがインストールされている場合は、$JAVA_HOME/jreに置き換えることができます$JRE_HOME

  • $ALIAS- 任意の値を指定できます。これは、この証明書を他の証明書と区別するための値です。例としては、「git-repo」や「artifact server」などがあります。

  • $JENKINS_HOME- これはジェンキンスの家への道です。 よくあります/var/lib/jenkins

次のコマンドを使用して、証明書を JVM cacerts ファイルにインポートできます。-- Jenkins マスターで、証明書を取得し、Jenkins の JVM キーストアをコピーし、証明書をキーストアにインポートし、信頼されたキーストアを Jenkins 起動パラメータに追加して、Jenkins を再起動します。

# Import certificate
openssl s_client -showcerts -connect https://your-target-server\
< /dev/null 2> /dev/null | openssl x509 -outform PEM > ~/root_ca.pem

# Duplicate Java Keystore file and move into Jenkins...
mkdir $JENKINS_HOME/keystore/
cp $JAVA_HOME/jre/lib/security/cacerts $JENKINS_HOME/keystore/

# Add Certificate to Keystore
keytool -import -alias $ALIAS -keystore $JENKINS_HOME/keystore/cacerts -file ~/root_ca.pem

# Add -Djavax.net.ssl.trustStore=$JENKINS_HOME/keystore/cacerts to the
# Jenkins startup parameters. For Debian/Ubuntu, this is /etc/default/jenkins
echo 'JAVA_ARGS="$JAVA_ARGS -Djavax.net.ssl.trustStore=$JENKINS_HOME/keystore/cacerts"'\
>> /etc/default/jenkins

sudo service jenkins restart

参照ヘルプ:

おすすめ記事