80

WCF を使用して WebService を作成しました。私はセルフホスティングを行っており、HTTPS を有効にしたいと考えています。これが発生するという私の理解から、証明書を作成し、使用したいポートにバインドする必要があります。

これを処理するために私が行った手順は次のとおりです。

  1. ルート認証局として機能する証明書をローカル マシンに作成しました
    • makecert -n "CN=My Root Certificate Authority" -r -sv RootCATest.pvk RootCATest.cer
  2. MMC.exe を開き、保存した .cer ファイルを「Trusted Root Certificate\Certificates\」フォルダーにインポートします。
    • makecert -sk MyKeyName -iv RootCATest.pvk -n "CN=MyMachineName" -ic RootCATest.cer -sr localmachine -ss my -sky exchange -pe MyMachineName.cer
  3. 署名されたルート認証局から一時的なサービス証明書を作成しました

    • makecert -sk MyKeyName -iv RootCATest.pvk -n "CN=MyMachineName" -ic RootCATest.cer -sr localmachine -ss my -sky exchange -pe MyMachineName.cer
  4. 証明書をポート番号 (この場合は 443) にバインドしようとしました

    • netsh http add sslcert ipport=0.0.0.0:443 certhash=2c5ba85bcbca412a74fece02878a44b285c63981 appid={646937c0-1042-4e81-a3b6-47d678d68ba9}

手順 4 の結果は次のエラーです。

SSL 証明書の追加に失敗しました、エラー 1312

指定されたログオン セッションが存在しません。すでに終了している可能性があります。

なぜこのエラーが発生するのか、誰にも手がかりがありますか?

4

25 に答える 25

63

同じエラーが発生しました。Micheal が言ったように、初めて発生したときは、証明書を [証明書 (ローカル コンピューター)] --> [個人] --> [証明書] フォルダーの下に移動する必要がありました。同じ証明書を別のマシンにインポートしたときに、同じエラーが発生しました。その理由は、certmgr.msc を使用して証明書をインポートしていたためです。. 開いたウィンドウには、「Certificates – Current User」と表示されます。このウィンドウを使用して証明書をインポートすると、netsh が 1312 エラーで失敗します。MMC で証明書スナップインを使用して、証明書をインポートしてください。MMC の証明書スナップインには、「証明書 (ローカル コンピューター)」が表示されます。これにより、netsh の実行が通過します。

于 2013-04-18T18:02:37.517 に答える
51
SSL Certificate add failed, Error 1312

A specified logon session does not exist. It may already have been terminated.

私はまったく同じ問題を抱えていて、その理由が何であるかを理解するために数日を費やしました.

簡単に言うと、問題は、winrmPRIVATE KEY を持たないサーバーに証明書をインストールしたことです。

私はこれを数回チェックしました。ここで完全に説明されているように、証明書を削除してmakecert、たとえばを使用して再構築する必要があります。

証明書に秘密鍵があるかどうかを簡単に確認できmmcます。証明書のアイコンを見てください - アイコンにキーサインがなければなりません。certificateslocal machinepersonal

于 2014-11-20T13:05:13.617 に答える
9

私は一日中エラー 1312 と戦ってきました。それを修正したのは、証明書を .crt ではなく .p12 ファイルとして mmc にインポートすることでした。OpenSSL で作成する場合は、.crt を作成したら、次のようにします。

pkcs12 -export -in server.crt -inkey server.key -name “Your Name” -out server.p12

説明どおり。mmc にインポートすると、"Personal Information Exchange" ファイルと呼ばれます (.pfx ファイルも機能するようです)。

サーバーの作成と SSL の扱いは初めてで、これが機能する理由はわかりませんが、お役に立てば幸いです。

于 2014-06-03T22:47:10.597 に答える
6

私の場合、問題は CER ファイルに秘密鍵が添付されていないことでした。

これらの OpenSSL コマンドを使用して PK をアタッチしました。

openssl x509 -in server.der -inform DER -out server.pem -outform PEM
openssl pkcs12 -export -in server.pem -inkey serverkey.pem -out server.p12

CER/DER ファイルで機能します。

于 2014-06-11T11:10:25.163 に答える
6

問題はステップ 4 にありました。ルート証明書の拇印を certhash の値として使用していました。これを解決するには、MMC に戻り、証明書 (ローカル コンピューター) --> 個人 --> 証明書フォルダーを更新する必要がありました。次に、ルート認証局が「発行した」証明書の拇印を使用します。

于 2012-10-26T18:12:45.810 に答える
4

これは明白に思えるかもしれません。ただし、頭を悩ませる時間を節約できると思います。個人証明書フォルダー (パーソナル コンピューター アカウント用) の下に拡張子が .cer のファイルをインポートしました。しばらくして、代わりに *.pfx 拡張子を持つファイルをインポートする必要があることに気付きました。それを修正してほら!問題が解決しました!

于 2017-01-09T17:13:12.460 に答える
2

このエラーを受け取る方法は複数あります (他の回答については上記を参照してください)。

この特定のエラーを受け取るもう 1 つの方法は、証明書が適切なストアにないときに、証明書をポートにバインドしようとすることです。

証明書が localMachine ルート ストアに格納されていることを確認します (コマンド ラインから certutil または certmgr.exe を使用して正しくダンプできます)。

更新された文法:)

于 2014-01-07T21:25:44.307 に答える
1

もしも:

  1. マシンに IIS がありませんでした (たとえば、セルフホステッド WCF を使用しているとします)。
  2. IISマネージャーを使用して別のマシンで証明書要求を作成しました(秘密鍵が証明書要求に埋め込まれた暗号から来ていることを理解していなかったため、後で発行されました.pb7

それから:

  1. 証明書要求を行うために使用した IIS マシンに をインストールするだけ.pb7です (ローカル マシン/個人/証明書 - mmc を使用)。
  2. 秘密鍵を含む証明書をそのマシンからエクスポートします(パスワードを割り当てます)。と
  3. mmc を使用して WCF サーバーにインストールします (ローカル マシン/個人/証明書 - mmc を使用)。

次に、netshポート 443 にバインドできます。1312 エラーはもうありません。

于 2015-04-03T19:09:04.273 に答える
1

さらに別の答えをリングに投げ込むために、これが私が抱えていた問題です:

証明書を(Local Computer)\...証明書ストアにインポートしましたが、Trusted Root Certification Authoritiesセクションにインポートしていました。セクションにインポートする必要がありましPersonalた。そうしないと、このエラーが発生しました。

于 2016-02-24T16:12:44.087 に答える
0

私はこれに何時間も取り組んでおり、基本的に@DoomerDGR8が上で言ったことを読んでいますが、私の修正ははるかに簡単でした. 走った

 C:\Windows\system32> certutil -store TRUSTEDPUBLISHER

これには、インストールしたいくつかの証明書がリストされています。次に、netsh でのインストールに問題があった証明書に対して修復ストアを実行しました。

C:\Windows\system32> certutil -repairstore TRUSTEDPUBLISHER 6

末尾の数字6は証明書のインデックスを表しており、ストアで見つかりました。これがお役に立てば幸いです

于 2016-07-11T16:09:09.097 に答える
0

私の .pfx ファイルには秘密鍵がありましたが、まったく同じ問題がありました。MMC コンソールを使用した証明書の追加は成功しましたが、.Net X509Store.Add(X509Certificate2) メソッドを使用してプログラムで追加すると、毎回エラー 1312 で失敗しました。証明書のアイコンには鍵のサインさえありました。
数日後、ここの投稿で提案されているように、最終的に makecert.exe を使用して新しい証明書を作成することにしました。その後、すべてが順調でした。キーは %ProgramData%\Microsoft\Crypto\RSA\MachineKeys に表示されます。何らかの理由で、以前の pfx ファイルには互換性がありませんでした。

私の経験では、キーが %ProgramData%\Microsoft\Crypto\RSA\MachineKeys\ に表示されない限り、「netsh http add sslcert ....」とのバインドは失敗します。

于 2015-01-29T08:37:10.167 に答える
0

さらに別のエラーが発生しました。同じ秘密鍵を使用して、CA から WorkFolders サービスの期限切れの証明書を更新しました。その後、常にエラー 1312 が発生しました。Certificate Management が秘密鍵を持っていることを示していても。
新しい証明書を再発行することによってのみ問題を解決できました(更新オプションなし)。その後、最初の試行で機能しました。
多分これは、更新オプションも試した人を助けるでしょう.

于 2017-05-08T10:56:13.510 に答える
0

私にとっては、コマンドラインで使用していた証明書ハッシュが、サーバーにインストールされている証明書に対応していることを確認することで、問題は解決しました。

netsh http add sslcert ipport=0.0.0.0:8081 certhash= 1061a577f0cc1c428186000dc84f02a7111ca1b2 appid={GUID}

于 2020-06-09T15:14:57.420 に答える
0

引数は、.net フレームワークの名前空間からのStoreName列挙のcertstorename文字列値である必要があります。System.Security.Cryptography.X509Certificates

于 2016-06-09T14:45:13.963 に答える
0

私の側では、提供されたファイルは P7B ファイルと一連の証明書ファイルでした。行き詰まった後、同僚に助けを求めたところ、PFX を介して秘密鍵と一緒に証明書をインポートするというアイデアが得られました。

この記事では、P7B ファイルを PFX に変換する手順を説明しました。要約すると、次のことを行うだけです。

  1. openssl を使用して、最初に P7B ファイルを PEM に変換します。
  2. PEM ファイルを PFX に変換する

PFX ファイルをインポートできるようになりました。注意すべき重要な情報があるため、上記の記事を読むことをお勧めします。

于 2020-08-28T15:04:39.083 に答える