web-dev-qa-db-ja.com

「SSL証明書に、ホスト名と一致しない共通名(CN)が含まれています。」 VSTS展開

VSTSを使用してAzure VMに展開しています。リリース定義で、ファイルをコピーしようとすると、次のエラーが表示されます。

SSL証明書に、ホスト名と一致しない共通名(CN)が含まれています。詳細については、about_Remote_Troubleshootingヘルプトピックを参照してください。WinRM接続に関連する問題を修正するには、タスクで[コピーの前提条件を有効にする]オプションを選択します。すでに設定されており、ターゲット仮想マシンがロードバランサーによってサポートされている場合は、インバウンドNATルールがターゲットポート(5986)に構成されていることを確認します。ARMにのみ適用されます= VM。詳細については https://aka.ms/azurefilecopyreadme };を参照してください]

ロードバランサーを使用していません。 Azureポータル(パブリックIP設定)でVM)のDNS名ラベルを追加するたびに問題が発生することに気付きました。

11
srsedate

問題はホストファイルまたはビルドエージェントではなく、[〜#〜]ターゲット[〜#〜]マシン上のサーバー証明書にあります。私にとって、問題が発生したときに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'。がんばって!

詳細については、こちらをご覧ください。

http://www.dotnetcurry.com/windows-Azure/1289/configure-winrm-execute-powershell-remote-Azure-with-arm

26
srsedate