自己ホスト型WCFサービスを使用したSSLの手順に従っています。 方法:SSL証明書でポートを構成する で説明されているように、netshを使用してWindows 7で証明書をバインドしようとすると、次のように失敗します。
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.
エラーの原因は、signroot.certの証明書ファイルからThumbPrintを直接取得したことです。このファイルは、「信頼されたルート証明機関」の作成に必要な最初のmakecertコマンドから作成されます。 )2番目のmakecertコマンドの自己署名信頼証明書。
2番目のmakecertコマンドは、作成された証明書も「証明書(ローカルコンピューター)->個人->証明書ノード」にインストールします。 「=」を再表示するために、現在開いているMMCを再度refreshする必要があり、ThumbPrintはこの証明書から取得する必要があります。 signroot.cert。
それでも解決しない場合は、M $からこの修正プログラムをインストールする必要があります。 http://support.Microsoft.com/kb/981506
私はこれと永遠に戦って、IIS ExpressでSSLを正しく実行しました。私の証明書はTrusted Root Certification Authoritiesストアではなく個人証明書ストア。これは私にとってうまくいったことです:
netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
ポートバインディングでエラー1312の4つの原因が見つかりました。
私たちは同じエラーに直面し、長い時間を経て、netshがすべてのローカルマシンストアを参照して「certhash」パラメータで識別される証明書を見つけていなかったことに気付きました。デフォルトでは、「個人」ストア内の証明書のみを検索します。
証明書は「個人」ストアではなく「信頼されたルート証明機関」ストアにあったため、netshコマンドに「certstorename」パラメーターを追加することで問題を解決しました。
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...
もう1つ注意すべき点は、MMCコンソール証明書プロパティウィンドウから証明書ハッシュをコピー/貼り付け、ハッシュの開始時に面白い文字が表示される可能性があることです。この文字は、テキストエディターが使用している可能性のあるUTF-8エンコーディングでは見えません。
Netshは、どのパラメーターを開示せずに「パラメーターが正しくありません」で失敗するだけなので、助けにはなりません;)
エンコーディングをANSIに変更すると、charが表示され、削除すると、チャームのように機能します
私にとっての鍵は、IEを使用して溝を掘ることでした。
Mmc.exeを使用して、[ファイル]-> [スナップインの追加と削除]を選択し、「証明書」を追加します。コンピューターアカウントを管理してから、「ローカルコンピューター」を管理します。
ルート証明書を証明書(ローカルコンピューター)/信頼されたルート証明機関/証明書にインポートします。
クライアント証明書をPersonal/Certificatesにインポートしてから、netsh http add sslcertを実行します。
あなたの質問で次のことに気づきました。元の問題を解決できない場合がありますが、ここの構文は正しくありません。
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. 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値が異なります。コマンドは機能します。
「公式」(not自己署名)証明書(Thawteなど)が証明書ストアにインポートされます:「Trusted Root Certification Authorities」。
netshコマンドでパラメーター「certstorename =」が渡されない場合、netshは「Private」ストアを表す「MY」を取ります。
公式の証明書をバインドするには、次を追加する必要があります。
certstorename=Root
netshコマンドに。