web-dev-qa-db-ja.com

"パラメータが正しくありません。" netsh http add sslcertを使用したエラー

このリンクの「方法:SSL証明書を使用してポートを構成する」の手順に従ってください。 http://msdn.Microsoft.com/en-us/library/ms733791.aspx 、これを入力しましたコマンドラインのコマンド(duh):

> netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid={EDE3C891-306C-40fe-BAD4-895B236A1CC8}
The parameter is incorrect.

certhash thumb印は、[証明書(ローカルコンピューター)]> [個人]> [証明書]フォルダーの証明書から取得されました。

appid GUID=が生成されました。

これを機能させるために修正する必要がある他に何が間違っていますか?

50
Derrick

PowerShellでは、次のように入力します。最初にnetsh httpモードに入り、次にsslcertを追加します。それは私のために働いた。

>netsh

netsh>http

netsh http>add sslcert ipport=0.0.0.0:13286 appid='{a5455c78-6489-4e13-b395-47fbdee0e7e6}' certhash=<thumprint without space>
72
Abdul Hakim

この問題の別の考えられる原因は、Certificate Managerページからコピーされた隠し文字です。証明書の詳細ウィンドウからthumb印をコピーする場合は、開始時に非表示の文字を確認してください(矢印キーを使用してください!)。これが、「パラメーターが正しくありません」というエラーメッセージの原因でした。

39
Richard

Ps1ファイルのPowerShellコマンドラインとPowerShellスクリプトは、カッコ{{}がPowerShellディレクティブであると見なします。引用してください。さもなければ、見てきたように、PowerShellは混乱します。

だからこれではなく(あなたが見つけた失敗):

netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= {EDE3C891-306C-40fe-BAD4-895B236A1CC8} 

これを行います(一重引用符に注意してください):

netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= '{EDE3C891-306C-40fe-BAD4-895B236A1CC8}'

以下に、中かっこを使用したPowerShell構文に関する情報を示します。

http://danv74.wordpress.com/2012/07/12/powershell-and-the-hidden-art-of-curly-braces-and-other-braces/

24
codingoutloud

Netshコマンドの構文を見ると、次の例を見ました。

add sslcert ipport=1.1.1.1:443 certhash=0102030405060708090A0B0C0D0E0F1011121314 appid={00112233-4455-6677-8899-AABBCCDDEEFF}

それを見て、あなたの問題はあなたがしていることです

ipport:10.141.146.227:7001
      ^

とは対照的に

ipport=10.141.146.227:7001
      ^
13
cmptrgeekken

Certificate\Details\Thumbprintから証明書のprint印をコピーすると、thumb印の値の先頭にANSIに変換されたときに「?」として表示されるバイト「3f38」が追加されます。この隠された価値が問題を引き起こしました。

値をnotepad ++に貼り付け、[エンコード]> [ANSIに変換]を選択してから、先頭に追加された[?]を手動で削除しました。文字。その場合、使用する-印値はcleanになります。

11
  1. コマンドをメモ帳にコピーします
  2. ANSIとして保存します
  3. ファイルを閉じて再度開きます
  4. 偽物を削除しますか?キャラクター
  5. メモ帳からコマンドプロンプトにコピーして、コマンドを実行します
10
tcb

私の場合、問題は、Microsoftの命令に従って、SSLウィンドウからthumb印をコピーしたことです。問題は、そうすることで、ハッシュの先頭に印刷できない文字がコピーされることです。

Thumb印をメモ帳に貼り付けてから、ホームを押し、pres deleteを2回(thumb印の最初の文字が削除されるまで)して、文字を再度追加してみてください。 thumb印をコピーしてcmdに貼り付けると、文字が表示されます。

thumbprint with "?"

5
SimSimY

Http.sysを使い始めたばかりのときにも、このエラーが発生していました。走った後:

netsh http add iplisten ipaddress=0.0.0.0

そうして netsh http add sslcertコマンドが正常に動作し始めました。

5
Tim Danner

私はこの問題に何度も直面し、それが異なる原因を持つたびに、私は私のために働いた原因と正確なコマンドを書くことにしました。

ここにいくつかの原因があります:

1- Windowsダイアログから証明書のprint印をコピーして貼り付けると、非表示の文字がハッシュに追加されます。テキストエディターでは表示されませんが、動作させるには文字を削除する必要があります。

2- SSL thumb印は、[個人]-> [証明書]で利用可能になり、localhostで動作します。

3-「ipport:」ではなく「ipport =」である必要があります

4- SSL証明書には秘密鍵が必要です。証明書管理コンソールを使用している場合は、証明書ビューに小さな鍵アイコンがあることを確認してください。

5- GUIDは完全な形式で定義する必要があります:{a10b0420-a21f-45de-a1f8-818b5001145a}、powershellで引用符を1つ持つ必要があります: '{a10b0420-a21f-45de-a1f8- 818b5001145a} 'したがって、PowerShell形式はコマンドラインとは異なります。

6- SSL証明書には、パディングがすべて「0」でスペースのない完全な文字が必要です。 thumb印をコピーして(特別な隠し文字を削除するように注意して)スペースを削除するか、「netsh http show sslcert」を使用して、証明書が既に別のアドレスに登録されている場合に値を取得できます。

私のために働いたもの:

ここにPowerShellで私のために働いた正確なコマンドがあります:

netsh http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid='{a10b0420-a21f-45de-a1f8-818b5001145a}'

コマンドラインステートメントは次のとおりです。

netsh
http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid={a10b0420-a21f-45de-a1f8-818b5001145a}

関連する問題を回避するためのその他のコマンド:

次のコマンドを使用して、現在登録されている証明書を表示します。そこからcerthashまたはappidを見つけて再利用できます。

netsh http show sslcert

証明書が同様のIPとポートで既に登録されている場合は、削除する必要があります。 localhost、127.0.0.1および0.0.0.0で問題が発生することがわかりました。テスト環境に登録する必要があるのは0.0.0.0のみです。次のコマンドを使用して、潜在的な破損した証明書を削除します。

netsh http delete sslcert ipport=0.0.0.0:20001
5
mohghaderi

CerthashパラメータにThumb印の代わりにシリアル番号を使用すると、文字数の違いによりこのエラーが発生します。 0でパディングすると、エラーがSSL証明書の追加に失敗します。エラー:1312

3
Daniel N

サー、あなたはipportを持っています:ipport =ではなくip:portでそれを行うので簡単にできます

また、{対<または(にも注意してください。

2
GMLewisII

バインドとしてDNS名がある場合は、ipportの代わりにhostnameportを使用してください

netsh http delete sslcert hostnameport=domainame.com:443

Office 365シングルサインオンのADFSプロキシバインディングを削除する必要がありました。

2
joelschmid

問題の解決策を探しているときにこの質問に出くわしました。私は最終的に私のために働いたものを見つけました。

certhashパラメーターの長さが完全に20バイトではありませんでした。動作させるには、前にゼロを埋めなければなりませんでした。

だから、代わりに

certhash=112233445566778899aabbccddeeff00、私はこれをしなければなりませんでした:

certhash=00000000112233445566778899aabbccddeeff00

お役に立てれば。

2

同じ「パラメーターが正しくありません」を取得した後、それを機能させると思ったことがいくつかありました。エラー。

1)マシンを再起動し、再度実行しました。初めて働きました。 2)c:\にいることを確認し、再起動後にコマンドを再入力しても機能しなかった

理由を説明することはできませんでしたが、おそらく両方とも、何か他の問題があったと思います。これが私に3回目に起こったので、

3)私は(発行されたサーバー証明書ではなく)私のCAのthumb印を通過し、MMCからコピーしました。

これが発生した後、私は再びそれを削除し(netsh http delete sslcert ipport = 0.0.0.0 :)、サーバー証明書のthumb印を使用してプロセスを繰り返しました。気の毒なことは再び働いた。

私は知らない、私がやったのと同じことを試してみてください。おそらくこれらのいずれかが機能します。最終的には、私は偽りのスペースやキャラクターを入力していると思われます。

1
Derrick

これは、PowerShellコマンドラインから機能します。

$AppId = [Guid]::NewGuid().Guid
$Hash = "209966E2BEDA57E3DB74FD4B1E7266F43EB7B56D"

netsh http add sslcert hostname=localhost:8088 certhash=$Hash appid=`{$AppId`} certstorename my

重要な詳細は、各{}をバックティック( `)でエスケープし、certstorenameを省略しないことです。そうしないと、netshはエラー87を発生させます。

変数は便宜上のものです。

1
PeterXX

「-」は関係ありません。 GUIDが正確にこのように見えない場合は、不正なパラメーターエラーが発生します。

また、ランダムではなく、IISのappidにguidを使用しています。

このスレッドに私の解像度を追加すると便利です:

Hostnameportパラメーターでippportを追加しようとしていたので、このパラメーターエラーが発生しました。

netsh http add sslcert hostnameport="10.0.0.120:443"

の代わりに :

netsh http add sslcert ipport="10.0.0.120:443"

チャ!

0
Nicolas Leucci

VSとIIS localhost証明書を削除することでExpressとの関係をマングリングしてしまったに違いありません。本当に立ち往生しました。そもそもこのスレッドに連れて行ってほしい)。

SSL以外のURLで割り当てられたポート(launchSettings.json .NET Coreアプリで)およびプロジェクト設定のSSLを有効にするチェックボックスを無効にして、新たに開始します次のコマンドを使用して、新しく作成した証明書を追加できました:netsh http add sslcert ipport=0.0.0.0:44392 appid={214124cd-d05b-4309-9af9-9caa44b2b74b} certhash=A0ADC1A1002F288CCFA96261F9F352D28C675A90

また、appid変数はVSプロジェクトのAppIDの反映ではないことに注意してください(または、少なくともそうである必要はありません)。 Scott Hanselmann によると、これは単なる任意のGUIDです。

AppIdは実際には重要ではなく、GUIDだけです。これは、その証明書を使用していることをHTTP.SYSに伝えます。

これは私には明らかではなく、パラメータの処理が間違っているエラーを処理することで、より不明瞭になりました。

同様の問題が発生している場合は、幸運を祈ります。あなたを信頼しています。あなたが道に迷って孤独を感じているなら、私にpingしてください。その時までに何かを覚えているかもしれません! :D

0
Vinney Kelly