0

私のパートナーのX509クライアント証明書を完全なチェーンと共に、すべてのサービスファブリッククラスタノードにインポートする必要があります。各受信要求を検証し、クライアント証明書に基づいて各パートナーを認証できます。これは、クライアント証明書をインポートするときに、関連する中間証明書(クライアント証明書に署名したもの)と関連するルート証明書(中間証明書に署名したもの)を、適切な証明書ストアに自動的にインストールするようにします。信頼されたルート証明機関]をローカルマシンストアにインストールします。エンドユーザ通信用のすべてのサービスファブリッククラスタノードにクライアント証明書(チェーン付き)をインポートする

チェーン全体を証明書ストアの適切な場所に格納する理由は、サービス認証パイプラインコンポーネントのSystem.Security.Cryptography.X509Certificates名前空間のX509Chainを使用して受信クライアント証明書を検証するためです。 X509Chainは、ルート証明書の完全な検証のために「信頼されたルート証明機関」ストアに依存しているようです。

a)node to nodeとb)クライアントとクラスタの通信を管理する方法については、https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-securityのような多くの情報があります。しかし、(サービスファブリッククラスタでホストされている)サービスとクライアント証明書を使用しているエンドユーザーのコンシューマーとの間の通信を保護することに関する情報はあまりありません。私がこの情報を見逃した場合は、私に知らせてください。

私は構成するパートナークライアント証明書があまりありません。パートナー数は十分に管理範囲内です。また、追加する新しいパートナークライアント証明書があるたびにクラスタを再作成することはできません。

  1. 私は SerivceManifest.xmlファイルに活用し /ServiceManifest/CodePackage/SetupEntryPoint要素を行うと、(キーボールトまたは他の場所に格納されている)パートナー 証明書をインポートするカスタムコードを記述する必要がありますか?このアプローチの賛辞 と短所は何ですか?
  2. また、自分の要件をすべて満たすパートナー証明書をインポートする簡単な方法はありますか? の場合は、これを達成するための詳細な手順を実行してください。

更新: 私はosProfileセクションの下に上記linkで説明したようにクライアント証明書を追加する提案された方法を試してみました。これはかなり正直そうだった。

これを行うには、関連する証明書(秘密として)を関連する鍵保管庫にこのlinkの説明に従ってプッシュする必要がありました。この記事では、証明書情報をキーボートに秘密として保存する前に、証明書情報をJson形式にフォーマットする方法について説明します(「Azureリソースプロバイダの使用のための証明書のフォーマット」の項を参照)。このJSONは、PFXファイルのバイトをアップロードするためのフォーマットを以下ました:

{ 
    "dataType": "pfx", 
    "data": "base64-encoded-cert-bytes-go-here", 
    "password": "pfx-password" 
} 

をしかし、私はクライアント証明書の公開部分を扱っておりますので、私は明らかに同じである(WindowsのPFXファイルだけをbase64 CERファイルを扱っておりません他の場所でpemファイル)。証明書の公開部分にはパスワードがありません。だから私は、次のようにJSON形式を変更:私も使ってみました

New-AzureRmResourceGroupDeployment : 11:08:11 PM - Resource Microsoft.Compute/virtualMachineScaleSets 'nt1vm' failed with message '{ 
    "status": "Failed", 
    "error": { 
    "code": "ResourceDeploymentFailure", 
    "message": "The resource operation completed with terminal provisioning state 'Failed'.", 
    "details": [ 
     { 
     "code": "CertificateImproperlyFormatted", 
     "message": "The secret's JSON representation retrieved from 
https://xxxx.vault.azure.net/secrets/ClientCert/ba6855f9866644ccb4c436bb2b7675d3 has data type pem which is not 
an accepted certificate type." 
     } 
    ] 
    } 
}' 

{ 
    "dataType": "pem", 
    "data": "base64-encoded-cert-bytes-go-here" 
} 

私はosProfileセクションの下で適切な変更と関連ARMテンプレートに新AzureRmResourceGroupDeploymentを呼び出したときに、私は次のエラーを取得しています以下のような 'cer'データ型:

また、同じエラーが発生しました。

私は間違っていますか?

答えて

0

hereのように、すべてのノードで証明書をインポートすることを検討したいと思います。 (手順5)Azure Key Vaultを参照するARMテンプレートを使用して、指定したストアに複数の証明書を追加できます。耐久性レベルシルバー/ゴールドを使用して、再展開中にクラスタを稼働させたままにします。

信頼できるストアのadding証明書に注意してください。 証明書が信頼できるCAによって作成されている場合は、 を信頼できるルート機関ストアに置く必要はありません(既に存在するため)。

X509Certificate2を使用してクライアント証明書を検証します。 Verify、すべてのクライアントが通信する独自​​のサービスインスタンスを持っている場合を除きます。

+0

1)私は、信頼できるストアに証明書を置くことの危険性を理解しています。 2)ARMを介して証明書を追加すると、クラスタが機能している間に証明書をもう1つ追加する必要はありますか? – Raghu

+0

これはシルバー/ゴールドレベルのため、あなたのvmsノードは順次再起動されます – LoekD

+0

LoekD:私の質問の更新部分を見てください。 – Raghu

関連する問題