SSL证书添加绑定到端口时失败(SSL Certificate add failed when bi

2019-06-18 16:18发布

我使用WCF创建一个WebService。 我在做自己的托管和我想启用HTTPS。 从我的这种理解的事情发生,我需要创建一个证书,并绑定到我要使用的端口。

下面是我所做的来处理这个步骤:

  1. 创建我的本地计算机上的证书作为根证书颁发机构
    • makecert -n “CN =我的根证书颁发机构” -r -sv RootCATest.pvk RootCATest.cer
  2. 打开MMC.EXE并导入保存.cer文件到“受信任的根证书\证书\文件夹
    • makecert -sk MyKeyName -IV RootCATest.pvk -n “CN = MyMachineName” -IC RootCATest.cer -sr LOCALMACHINE -ss我-sky交换-pe MyMachineName.cer
  3. 创建一个临时服务证书从签名的根证书颁发机构

    • makecert -sk MyKeyName -IV RootCATest.pvk -n “CN = MyMachineName” -IC RootCATest.cer -sr LOCALMACHINE -ss我-sky交换-pe MyMachineName.cer
  4. 试图绑定证书的端口号(443在这种情况下)

    • netsh的HTTP添加的sslcert ipport = 0.0.0.0:443 CERTHASH = 2c5ba85bcbca412a74fece02878a44b285c63981的appid = {646937c0-1042-4e81-a3b6-47d678d68ba9}

从步骤4的结果是以下错误:

SSL证书添加失败,错误1312

指定的登录会话不存在。 它可能已被终止。

有没有人有一个线索,为什么我可能会得到这个错误?

Answer 1:

我有同样的错误。 第一次发生了,因为迈克尔说,我不得不搬到下证书的证书(本地计算机) - >个人 - >证书文件夹。 我有同样的错误,当我进口的另一台机器上相同的证书。 其原因是,我使用certmgr.msc导入证书。 。 由此拉开的窗口显示“证书 - 当前用户”。 证书使用此窗口事业的netsh失败与1312错误进口。 确保使用证书管理单元在MMC导入证书。 该证书由MMC显示“证书(本地计算机)”管理单元。 这让在netsh执行航行通过。



Answer 2:

SSL Certificate add failed, Error 1312

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

我曾经有完全相同的问题,花了几天试图找出什么原因了。

为了使长话短说:问题是,你已经安装了的证书winrm是没有私人密钥服务器。

我已经检查了好几次。 你必须删除您的证书,并通过重建它makecert例如,因为它是完美的描述如下: http://blogs.technet.com/b/jhoward/archive/2005/02/02/365323.aspx

您可以轻松地检查,如果您的证书具有私人的关键是这样: mmc - certificates - local machine - personal 。 再看证书的图标 - 它必须有这个图标重要标志。



Answer 3:

我一直在处理这个问题,我使用的是自承载WCF服务。 我只是做了突破:

我曾在计算机存储的人事档案证书。 它过期,我的经理发出一个新的。 这种错误的新的失败我。 我尝试了很多东西,从谷歌,但在最后,用一个完全不同的解决方案解决了这个问题。

我安装了证书 - 过期的一个较新的一个。 然后我用这个命令来获取它们的列表:

certutil -store My

我得到这个输出(信息是假的和其他证书未列出):

================ Certificate 1 ================
Serial Number: 6d
Issuer: E=operations@voicetrust.com, CN=VoiceTrust Server CA, OU=VoiceTrust Oper
ations, O=VoiceTrust
 NotBefore: 03-Jan-2013 3:33 PM
 NotAfter: 03-Mar-2013 3:33 PM
Subject: E=hgulzar@voicetrust.com, CN=hornet.voicetrust.com, OU=Software Develop
ment, O=VoiceTrust eServices MENA FZ LLC, L=Dubai, C=AE
Non-root Certificate
Cert Hash(sha1): 98 5f a0 d3 11 6a 4b 64 3b db 0a a4 11 66 fc 08 28 74 7e 53
  Key Container = {E5BC0912-7808-4B89-B457-31946DE5990E}
  Unique container name: dfedfcc149408fb990a3bacd6d31126b_3277b2c9-9894-46d0-9b6
4-30f0d6589239
  Provider = Microsoft Enhanced Cryptographic Provider v1.0
Private key is NOT exportable
Encryption test passed

================ Certificate 2 ================
Serial Number: 6d
Issuer: E=operations@voicetrust.com, CN=VoiceTrust Server CA, OU=VoiceTrust Oper
ations, O=VoiceTrust
 NotBefore: 03-Nov-2013 3:33 PM
 NotAfter: 03-Dec-2013 3:33 PM
Subject: E=hgulzar@voicetrust.com, CN=hornet.voicetrust.com, OU=Software Develop
ment, O=VoiceTrust eServices MENA FZ LLC, L=Dubai, C=AE
Non-root Certificate
Cert Hash(sha1): 30 5f a0 d3 11 6a 4b 64 3b db 0a a4 11 66 fc 08 28 74 7e 53
  Key Container = {E5BC0912-7808-4B89-B457-31946DE5960E}
  *Unique container name:* 55edfcc149408fb990a3bacd6d31126b_3277b2c9-9894-46d0-9b6
4-30f0d6589239
  Provider = Microsoft Enhanced Cryptographic Provider v1.0
Private key is NOT exportable
Encryption test passed

现在,一切似乎都正常,但证书1是过期的,如果我尝试,而证书2失败,错误1312将其绑定到一个端口工作正常。

这难倒我来说,关键的区别是唯一的容器名称属性。 应该代表在硬盘上的物理密钥文件的%ProgramData%\Microsoft\Crypto\RSA\MachineKeys\

证书1,该文件是有,但对证书2,有没有这样的文件。 搜索后,我发现对证书2在文件中的子文件%AppData%\Microsoft\Crypto\文件夹中。 这是用户的特定按键而不是机器级密钥。 令人惊讶的是该证书被导入到电脑卖场但它始终保持用户的商店的容器关键。

我删除AppData文件夹下的“55edfcc149408fb990a3bacd6d31126b_3277b2c9-9894-46d0-9b64-30f0d6589239”文件并运行修复命令我在商店证书2:

certutil -repairstore My 2

这个时候,唯一的容器名字反映在“%ProgramData%\微软\加密\”和一切开始工作正确的文件夹中的文件。

希望这是有益的人。



Answer 4:

我买了一个官方Thawte的证书在我们的互联网服务器上的特定端口,以确保自托管(控制台应用程序)的Web服务。 然后,我已经收到了Thawte的证书,并与我们的互联网服务器(当时该证书是“受信任的根证书颁发机构”(在图像上相应的按键图标下观看到MMC安装了它,什么表明,该证书包含私钥什么是强制性能够为它BTW绑定到一个端口)。

下一步骤是使<port>为HTTPS:

netsh http add urlacl url=https://+:<port>/ user=everyone

(什么是没有问题的)

下一步骤是使对HTTPS端口():

netsh http add sslcert ipport=0.0.0.0:<port> certhash=<thumbprint to certificate> appid={<guid to application>}

这已经失败,错误信息:
SSL证书添加失败,错误:1312指定的登录会话不存在。 它可能已被终止。

然后,我已经在网上搜索并尝试了各种建议解决方案的(没有成功)。

我的情况的解决方案是certstorename = root添加到netsh命令:

netsh http add sslcert ipport=0.0.0.0:<port *1)> certstorename=Root certhash=<thumbprint to certificate *2)> appid={<guid to application *3)>}

笔记:
如果没有 certstorename应用于网netsh命令,netsh的采用默认,什么是我的 (什么目标证书存储区:“ 个人 ”,其中的自签名证书通常保存)。
目标证书存储区:“受信任的根证书颁发机构”

* 1):端口,您要使用的连接
* 2):可以提取指纹的证书,如果你打开证书(在Windows系统上,只需双击在资源管理器证书) - 选择选项卡“详细信息”,然后点击“指纹”。 该“指纹”则显示,并可以复制。 复制指纹,并删除所有空格...
* 3):作为APPID可以采取的形式{XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX}任何ID作为APPID只有信息。 用命令“netsh的HTTP显示的sslcert”你可以查询整个机器上的绑定证书和会看到信息,这APPID被绑定到哪个证书在我的情况(在实践中BTW不是真的有用),我已经使用了(从VS生成)GUID来我的Web服务应用程序



Answer 5:

我一直在争取错误1312一整天,什么固定它,我是在MMC导入证书作为.p12文件,而不是.CRT。 如果您在使用OpenSSL创建它,然后,一旦你已经创建了.CRT,这样做:

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

如上所述 。 当你去将其导入MMC这将是一个名为“个人信息交换”文件(显然一个.pfx文件也将工作)。

我是新来编写服务器和处理SSL,我不知道为什么这个工作,但我希望它能帮助。



Answer 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文件。



Answer 7:

这个问题在步骤4中,我使用从根证书的指纹在CERTHASH值。 为了解决这个问题,我不得不回到MMC并刷新证书(本地计算机) - >个人 - >证书文件夹。 然后从被“颁发机构”的根证书颁发机构的证书使用指纹。



Answer 8:

有收到此错误(参见上面的其他答案)的多种方式。

收到此特定错误另一种方法是尝试将证书绑定到一个端口时,该证书是不是在相应的商店。

验证证书存储在LOCALMACHINE根存储(可以使用的certutil或certmgr.exe从命令行来正确地放弃它)。

更新语法:)



Answer 9:

我有同样的问题,解决了使用此命令导入证书:

c:> certutil -importPFX certname.pfx

现在证书出现使用这个命令:

c:> certutil -store my

此命令之前,该证书不出现



Answer 10:

这似乎是显而易见的; 然而,我认为它可以救一个人挠头的一段时间。 我已经进口了一个文件,在我的个人证书文件夹.CER扩展名(个人计算机帐户)。 过了一会儿,我意识到我需要导入与* .pfx扩展名,而不是文件。 修正了就万事大吉了! 问题解决了!



Answer 11:

如果:

  1. 你没有IIS你的机器上(带自托管WCF的工作让我们说),并
  2. 您是通过IIS管理器中另一台机器上的证书请求(因为你不明白,私钥来自嵌入在证书请求密码-后来发行.pb7

然后:

  1. 刚去安装.pb7你用于制作证书请求(本地计算机/个人/证书-使用MMC)中的IIS机器上;
  2. 从该计算机导出证书,包括它的私有密钥(密码分配); 和
  3. 使用WCF服务器( - 使用MMC本地计算机/个人/证书)的MMC安装。

然后, netsh会让你绑定到端口443没有更多的1312个错误。



Answer 12:

只是抛出另一个答案成圈,这是我的问题:

虽然我进口我的证书导入(Local Computer)\...证书存储区中,我已经导入到的Trusted Root Certification Authorities部分。 我需要把它导入到Personal部分,否则这个错误发生。



Answer 13:

如果别人运行到这个问题,在这里回答没有明确回答这个问题,潜在的核心问题是要导入的私钥需要。 如果您在导入它标记证书导出的私钥不进口,你不能绑定。 如果你删除它,并重新导入它并将其标记为可导出,然后它会工作。

它也需要在本地计算机存储正如其他人指出。



Answer 14:

我有完全相同的问题eventhough我.pfx文件有私钥。 使用MMC控制台证书的添加是成功的,但使用的.Net X509Store.Add加入编程(X509Certificate2)方法每次都失败,错误1312证书甚至有图标上的重要标志。
几天后finaly决定将使用makecert.exe在帖子这里建议新的证书。 之后,一切都很好。 主要出现在%ProgramData%\微软\加密\ RSA \ MachineKeys的。 出于某种原因,我先前的PFX文件是不兼容。

根据我的经验,只要在%ProgramData%\微软\加密\ RSA \ MachineKeys的\,用“的netsh的http添加的sslcert ......”绑定操作将失败没有出现你的关键。



Answer 15:

certstorename参数应该是字符串值STORENAME .NET Framework中的命名空间枚举System.Security.Cryptography.X509Certificates



Answer 16:

我是这方面的工作了几个小时,以及通过何种@ DoomerDGR8上面说的基本上都看过,但我的修复是一个很多更简单。 我跑

 C:\Windows\system32> certutil -store TRUSTEDPUBLISHER

我已经安装了此列出了几个证书,然后我就跑,我在和netsh的安装问题在证书上修理店

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

在末尾的数字6表示您的证书,在卖场中发现的指标,希望这有助于



Answer 17:

在我的情况,同时创造了证书我选择了不同的名字比我对我的证书存储名称。 默认名称是我的。 所以,如果你是不同的追加certstorename = 您提供的商店名称的命令。



Answer 18:

创建使用OpenSSL(BouncyCastle的)自签名证书时,我有同样的错误我从这篇文章帮助解决它: 无法与导出私钥生成的证书,以字节数组中的.NET 4.0 / 4.5

我不得不添加:

        RsaPrivateKeyStructure rsa = RsaPrivateKeyStructure.GetInstance(seq); //new RsaPrivateKeyStructure(seq);
        RsaPrivateCrtKeyParameters rsaparams = new RsaPrivateCrtKeyParameters(
            rsa.Modulus, rsa.PublicExponent, rsa.PrivateExponent, rsa.Prime1, rsa.Prime2, rsa.Exponent1, rsa.Exponent2, rsa.Coefficient);

        var rsaPriv = DotNetUtilities.ToRSA(rsaparams);

        var cspParams = new CspParameters
        {
            KeyContainerName = Guid.NewGuid().ToString(),
            KeyNumber = (int)KeyNumber.Exchange,
            Flags = CspProviderFlags.UseMachineKeyStore
        };

        var rsaPrivate = new RSACryptoServiceProvider(cspParams);**

        // Import private key from BouncyCastle's rsa
        rsaPrivate.ImportParameters(rsaPriv.ExportParameters(true));

        // Set private key on our X509Certificate2
        x509.PrivateKey = rsaPrivate;


Answer 19:

所以要加(还)固定/局面。

我有使用BouncyCastle的创建自签名证书C#代码。

<packages>
  <package id="BouncyCastle" version="1.8.1" targetFramework="net45" />

所以,我的代码创建的证书,并将它们放置在证书商店中的正确位置。

使用提示这里,我安装内部部署服务总线1.1是失败......这使我在这里。

我结束了(从证书存储)删除我的BouncyCastle的代码创建了两个证书,并重新导入(与私钥)......而这一切的工作。 我第一次导入到

证书(本地计算机)/个人/证书

然后我复制粘贴(在MMC)任何其他地方(店),我需要他们。

我的“之前”和“之后”看起来完全从我的眼睛一样在MMC,但它固定的问题。 去搞清楚。



Answer 20:

我只是另一个错误。 我使用相同的私有密钥更新已过期的证书对我们WorkFolders从我们的CA服务。 然后,我总是得到错误1312即使证书管理显示我有一个私钥。
我只能通过重新颁发新证书(不续约选项)解决问题。 然后,它制作的第一次尝试。
也许这将帮助别人谁也尝试了更新的选择。



Answer 21:

就我而言,我已经错过了证书私钥。



文章来源: SSL Certificate add failed when binding to port
标签: ssl https