ANTスクリプトのターゲットを実行すると、次のエラーが発生します。 「サーバー証明書の検証に失敗しました」というエラーメッセージ。この問題を解決する方法を教えてください。 Windows XPで作業しています。
C:\Apache-ant-1.8.1>ant checkout
Buildfile: C:\Program Files\Java\Apache-ant-1.8.1\build.xml
checkout:
[svn] Using command line interface
Svn : Checking out a working copy from a repository :
co -r HEAD https://col.../trunk C:\ant-1.8.1\Test_Checkout
--username 69 --password *******--non-interactive
svn: PROPFIND request failed on '/svn/asia-pac-financials/trunk'
svn: PROPFIND of '/sv.../trunk':
Server certificate verification failed:
issuer is not trusted (https://col....com)
BUILD FAILED
C:\Apache-ant-1.8.1\build.xml:16: Can't checkout
Total time: 3 seconds
svn checkout
1回手動でURLにhttps://yoururl/trunk C:\ant-1.8.1\Test_Checkout
コマンドラインを使用して、証明書を受け入れます。
または、@ AndrewSpearが以下に述べているように
手動でチェックアウトするのではなく、svn list https://your.repository.url
ターミナル(Mac)/コマンドライン(Win)から、証明書を永久に受け入れるオプションを取得します。
svnは確認を求めます。永続的に受け入れます。
その後、これはantスクリプトからの後続のリクエストで機能するはずです。
使用可能なすべてのオプションに対して「svn help commit」を実行します。サーバー証明書の受け入れを担当するオプションが1つあることがわかります。
--trust-server-cert
:プロンプトを表示せずに未知のSSLサーバー証明書を受け入れます(ただし、--non-interactive
)
Svnコマンドの引数に追加すれば、svnを手動で実行して永続的に受け入れる必要はありません。
私は使用しません:
svn checkout
サーバー認証を許可するために、私はむしろ使用します:
svn list https://your.repository.url
認証も行うように求められます。
ログインできないユーザーの承認を得るためにこれが必要な場合は、次を実行します。
Sudo -u username svn list https://your.repository.url
Windows Server上のJenkinsでsvnを使用している場合、同じJenkinsのWindowsサービスユーザーを使用してhttps証明書を受け入れる必要があります。
[。
runas/user:MYSERVER\Administrator "svn --username user --password password list https:// myserver/svn/REPO "
svnは、証明書を受け入れるように求めます 正しいパスに保存します。
この後、Windowsバッチコマンドステップでjenkinsジョブでsvnを直接使用できるようになります。
string cmdArguments = $@"/k svn log --trust-server-cert --non-interactive ""{servidor}"" --username alex --password alex -r {numeroRevisao}";
ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe", cmdArguments);
cmd.CreateNoWindow = true;
cmd.RedirectStandardOutput = true;
cmd.RedirectStandardError = true;
cmd.WindowStyle = ProcessWindowStyle.Hidden;
cmd.UseShellExecute = false;
Process reg = Process.Start(cmd);
string output = "";
using (System.IO.StreamReader myOutput = reg.StandardOutput)
{
output += myOutput.ReadToEnd();
}
using (System.IO.StreamReader myError = reg.StandardError)
{
output += myError.ReadToEnd();
}
return output;
クライアントの信頼されたルート証明書コンテナにサーバー証明書をインストールするだけです(有効期限が切れていることが証明された場合、機能しない場合があります)。詳細については、同様の質問のこの投稿を参照してください。
from cmd run:SVN List URLには、3つのオプション(r)eject、(a)ccept、(p)ermanentlyが提供されます。 pと入力します。私にとってこれは解決した問題
コマンドライン中に動作します。ビルドの完了後に、Antを使用してアーティファクトをコミットしています。同じ問題を経験しました...証明書を除いて手動で動作しませんでした(ジェンキンスはそのように面白いです)。これらのオプションをsvnコマンドに追加します。
-非インタラクティブ
--trust-server-cert
他の答えは私にはうまくいきません。 Jenkinsでコマンドラインを機能させようとしています。必要なのは、次のコマンドライン引数だけです。
--non-interactive
--trust-server-cert