VSTSを使用してAzure VMに展開しています。リリース定義で、ファイルをコピーしようとすると、次のエラーが表示されます。
SSL証明書に、ホスト名と一致しない共通名(CN)が含まれています。詳細については、about_Remote_Troubleshootingヘルプトピックを参照してください。WinRM接続に関連する問題を修正するには、タスクで[コピーの前提条件を有効にする]オプションを選択します。すでに設定されており、ターゲット仮想マシンがロードバランサーによってサポートされている場合は、インバウンドNATルールがターゲットポート(5986)に構成されていることを確認します。ARMにのみ適用されます= VM。詳細については https://aka.ms/azurefilecopyreadme };を参照してください]
ロードバランサーを使用していません。 Azureポータル(パブリックIP設定)でVM)のDNS名ラベルを追加するたびに問題が発生することに気付きました。
問題はホストファイルまたはビルドエージェントではなく、[〜#〜]ターゲット[〜#〜]マシン上のサーバー証明書にあります。私にとって、問題が発生したときにVSTSを使用してAzure VMに展開していましたが、onsiteマシンも同様です。
Azure VMデプロイメントの場合、VMなしでDNS Name LabelパブリックIPの場合、後で追加します(example.centralus.cloudapp.Azure.com
など)。DNS名ラベルを変更した場合にも発生する可能性があります。
マシンへの接続方法を確認する必要があります。以前は、Azure VM IPアドレスを使用して問題なく動作していました。今、DNS名ラベルを追加したので、VSTSがexample.centralus.cloudapp.Azure.com:5986
を使用しようとしました。これをターゲットマシンアドレス。
targetマシンで、管理者としてPowerShellまたはコマンドプロンプトを開き、コマンド 'winrm e winrm/config/listener
'を入力します。 [〜#〜] http [〜#〜]用と[用の2つのリスナーを返す必要があります〜#〜] https [〜#〜](HTTPSにリストされていない場合でも、後で追加するので心配しないでください)。 HTTPSリスナーのHostnameに特に注意してください。これが以前に見つけたターゲットマシンアドレスと一致しない場合、それがエラーの原因です。 CertificateThumbprintは、マシン上のサーバー証明書に対応しています。
これらの証明書を表示するには、PowerShellまたはコマンドプロンプトからmmc
と入力し、Enterキーを押します。 [ファイル]> [スナップインの追加と削除...]に移動します。 「証明書」を選択し、追加をクリックします。ダイアログボックスで、[コンピューターアカウント]を選択し、Nextをクリックして、Finish。 [証明書]> [個人]> [証明書]の下に、WinRM構成で使用されている証明書が表示されます。ここで自己署名されている証明書は、公式の認証局によってサポートされていないため、テスト証明書と見なされます。使用するターゲットマシンアドレスを表すアドレスを作成する必要があります。
「IIS」の「Server Certificates」」でも証明書を表示できます。
マシンへの接続に使用するアドレスを確認してください。これはターゲットマシンアドレスです。
targetマシンで、管理者としてPowerShellを開きます。次のコマンドを入力します。
New-SelfSignedCertificate -DnsName WhateverTargetMachineAddressYouNeed -CertStoreLocation Cert:\LocalMachine\My
これにより、ターゲットアドレスの有効期間が1年の新しいサーバー証明書が作成されます。
次に、新しい証明書を使用するHTTPSトランスポートタイプのWinRMリスナーを再作成します。 IISを開き、WebサーバーのServer Certificatesを確認します。作成した証明書が表示されます。右-それをクリックし、「表示...」を選択します。詳細タブで、サムプリント証明書の場合、必要に応じてmmcからこれを行うこともできます。
PowerShellで次のコマンドを1つずつ入力します。
winrm delete winrm/config/listener?Address=*+Transport=HTTPS
次に:
winrm create winrm/config/listener?Address=*+Transport=HTTPS '@{Hostname="WhateverTargetMachineAddressYouNeed";CertificateThumbprint="TheThumbprintYouCopied";port="5986"}'
完了!PowerShellでwinrm e winrm/config/listener
と入力すると、新しい証明書を使用したHTTPSトランスポートが表示されます。
リリース定義または展開スクリプトのいずれかが古いアドレス(私にとっては、Azure VM IPアドレス))を使用している場合は、必ず新しいターゲットマシンのアドレス(私にとっては、Azure VM DNS名のラベル)WITHポート番号。VSTSでは、チェックボックスをオンにして、 'Test Certificate'。がんばって!
詳細については、こちらをご覧ください。