web-dev-qa-db-ja.com

netshを使用して、SSL証明書をポート番号にバインドできません

自己ホスト型WCFサービスを使用したSSLの手順に従っています。 方法:SSL証明書でポートを構成する で説明されているように、netshを使用してWindows 7で証明書をバインドしようとすると、次のように失敗します。

Windowsの場合 PowerShell

PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo          : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant

コマンドプロンプトで

C:\>netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}

SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.
33
Win Myo Htet

エラーの原因は、signroot.certの証明書ファイルからThumbPrintを直接取得したことです。このファイルは、「信頼されたルート証明機関」の作成に必要な最初のmakecertコマンドから作成されます。 )2番目のmakecertコマンドの自己署名信頼証明書。

2番目のmakecertコマンドは、作成された証明書も「証明書(ローカルコンピューター)->個人->証明書ノード」にインストールします。 「=」を再表示するために、現在開いているMMCを再度refreshする必要があり、ThumbPrintはこの証明書から取得する必要があります。 signroot.cert。

それでも解決しない場合は、M $からこの修正プログラムをインストールする必要があります。 http://support.Microsoft.com/kb/981506

参照: http://social.technet.Microsoft.com/Forums/en/winservergen/thread/68452008-a89b-40ba-9927-472efcfafc99

12
Win Myo Htet

私はこれと永遠に戦って、IIS ExpressでSSLを正しく実行しました。私の証明書はTrusted Root Certification Authoritiesストアではなく個人証明書ストア。これは私にとってうまくいったことです:

  1. 証明書が「Certificates(Local Computer)/ Personal/Certificates」にあることを確認します
  2. netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
  3. SSL証明書が正常に追加されました
  4. MMCを使用し、任意の場所に証明書をドラッグします。
29
TeamBrett

ポートバインディングでエラー1312の4つの原因が見つかりました。

  • SSL証明書が破損しています-証明書ストアから削除して再追加する必要があります。
  • SSL証明書には秘密鍵がありません-証明書ストアから削除して完全な公開/秘密証明書を再度追加するか、証明書に秘密鍵を添付する必要があります。
  • 2012R2のSP1以前のバージョンにインストールする場合、KB 981506が必要になる場合があります。
  • ローカルマシンの証明書ストアではなく、ユーザーストアにSSL証明書を追加した可能性があります-ユーザーストアから削除し、マシンストアに追加します。
15
Mark

私たちは同じエラーに直面し、長い時間を経て、netshがすべてのローカルマシンストアを参照して「certhash」パラメータで識別される証明書を見つけていなかったことに気付きました。デフォルトでは、「個人」ストア内の証明書のみを検索します。

証明書は「個人」ストアではなく「信頼されたルート証明機関」ストアにあったため、netshコマンドに「certstorename」パラメーターを追加することで問題を解決しました。

C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...  
7
Graffito

もう1つ注意すべき点は、MMCコンソール証明書プロパティウィンドウから証明書ハッシュをコピー/貼り付け、ハッシュの開始時に面白い文字が表示される可能性があることです。この文字は、テキストエディターが使用している可能性のあるUTF-8エンコーディングでは見えません。

Netshは、どのパラメーターを開示せずに「パラメーターが正しくありません」で失敗するだけなので、助けにはなりません;)

エンコーディングをANSIに変更すると、charが表示され、削除すると、チャームのように機能します

3
Arjan

私にとっての鍵は、IEを使用して溝を掘ることでした。

Mmc.exeを使用して、[ファイル]-> [スナップインの追加と削除]を選択し、「証明書」を追加します。コンピューターアカウントを管理してから、「ローカルコンピューター」を管理します。

ルート証明書を証明書(ローカルコンピューター)/信頼されたルート証明機関/証明書にインポートします。

クライアント証明書をPersonal/Certificatesにインポートしてから、netsh http add sslcertを実行します。

2
camster

あなたの質問で次のことに気づきました。元の問題を解決できない場合がありますが、ここの構文は正しくありません。

PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo          : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant

代わりにこれを使用します(単一引用符 '{}'でappidを使用):

netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
1
spowser

実際には、更新とは関係ありません。私は同じ問題で多くの時間を無駄にしました。新規インストールを行う場合、この問題に遭遇することはありませんが、以下を行おうとすると問題が発生します。

 1. Import same certificate again
 2. You create a new certificate and try to bind it which has same parameters, namely the CN value.

この問題を取り除くには、証明書ストアとIISサーバーキャッシュから適切にこの証明書を削除するか、または(開発目的のみ)新しい証明書を作成しますが、CN値が異なります。コマンドは機能します。

1
Johnydep

「公式」(not自己署名)証明書(Thawteなど)が証明書ストアにインポートされます:「Trusted Root Certification Authorities」。
netshコマンドでパラメーター「certstorename =」が渡されない場合、netshは「Private」ストアを表す「MY」を取ります。
公式の証明書をバインドするには、次を追加する必要があります。

certstorename=Root

netshコマンドに。

完全な情報

0
FredyWenger