我使用WCF创建了一个WebService.我正在进行自托管,我想启用HTTPS.根据我对此的理解,我需要创建一个证书并绑定到我想要使用的端口.
以下是我为处理此问题所采取的步骤:
从签名的根证书颁发机构创建临时服务证书
试图将证书绑定到端口号(在这种情况下为443)
步骤4的结果是以下错误:
SSL证书添加失败,错误1312
指定的登录会话不存在.它可能已经被终止了.
有没有人知道为什么我可能会收到此错误?
Dil*_*rma 51
我有同样的错误.第一次发生时,正如Micheal所说,我必须将证书移到证书(本地计算机) - >个人 - >证书文件夹下.当我在另一台机器上导入相同的证书时,我遇到了同样的错误.原因是我使用certmgr.msc导入证书..因此打开的窗口显示"证书 - 当前用户".使用此窗口导入的证书会导致netsh因1312错误而失败.确保在MMC中使用证书管理单元来导入证书.MMC的证书管理单元显示"证书(本地计算机)".这让netsh执行成功.
Ale*_*lex 44
SSL Certificate add failed, Error 1312
A specified logon session does not exist. It may already have been terminated.
Run Code Online (Sandbox Code Playgroud)
我曾经有过完全相同的问题,花了几天时间试图弄清楚原因是什么.
总而言之:问题是您已在winrm没有PRIVATE KEY 的服务器上安装了证书.
我已经多次检查了这个.您必须删除您的证书并使用makecert例如重建它,如下所述:http://blogs.technet.com/b/jhoward/archive/2005/02/02/365323.aspx
您可以轻松检查您的证书是否具有私钥,如下所示:mmc- certificates- local machine- personal.看看证书的图标 - 它必须在图标上有关键标志.
Has*_*zar 21
我一直在处理这个问题,我正在使用自托管的WCF服务.我刚刚取得了突破:
我在Machine store的人员文件夹中有一个证书.它已过期,我的经理发布了一个新的.这个错误让我失败了.我尝试了很多来自谷歌的东西,但最后,使用完全不同的解决方案解决了这个问题.
我安装了两个证书 - 过期的证书和较新的证书.然后我使用此命令获取它们的列表:
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
Run Code Online (Sandbox Code Playgroud)
现在,一切似乎都没问题,但证书1已过期,如果我尝试将其绑定到端口,则工作正常,而证书2则因错误1312而失败.
困扰我的关键区别是Unique容器名称属性.它应该代表硬盘驱动器中的物理密钥文件%ProgramData%\Microsoft\Crypto\RSA\MachineKeys\
对于证书1,文件在那里,但对于证书2,没有这样的文件.搜索后,我在文件夹的子文件夹中找到了证书2的%AppData%\Microsoft\Crypto\文件.这是用户特定的键而不是机器级键.令人惊讶的是,证书被导入到计算机商店中,但它总是保留用户商店的容器密钥.
我删除了AppData文件夹下的'55edfcc149408fb990a3bacd6d31126b_3277b2c9-9894-46d0-9b64-30f0d6589239'文件,并在商店中运行了我的证书2的修复命令:
certutil -repairstore My 2
这次,Unique容器名称反映了'%ProgramData%\ Microsoft\Crypto \'下正确文件夹中的文件,一切都开始工作了.
希望这对某人有帮助.
Fre*_*ger 19
我已经购买了官方Thawte证书,以通过我们的互联网服务器上的特定端口保护自托管(控制台应用程序)Web服务.然后我收到了Thawte证书并在我们的Internet服务器上安装了mmc(然后证书可以在"受信任的根证书颁发机构"下查看(图像上有关键图标,表明证书包含私钥是什么是强制性的)能够将它绑定到端口btw).
下一步是启用<port>for https:
netsh http add urlacl url=https://+:<port>/ user=everyone
Run Code Online (Sandbox Code Playgroud)
(什么都没有问题)
下一步是为https启用port():
netsh http add sslcert ipport=0.0.0.0:<port> certhash=<thumbprint to certificate> appid={<guid to application>}
Run Code Online (Sandbox Code Playgroud)
这已失败,并显示错误消息:
SSL证书添加失败,错误:1312指定的登录会话不存在.它可能已经被终止了.
然后我搜索了互联网并尝试了各种建议的解决方法(没有成功).
我的案例的解决方案是将netstorename = 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)>}
Run Code Online (Sandbox Code Playgroud)
注意:
如果net netsh命令没有应用certstorename,则netsh采用默认值,什么是MY(证书存储的目标:" Personal ",其中自签名证书通常存储).
Root以证书存储为目标:"受信任的根证书颁发机构"
*1):端口,您要使用连接
*2):您可以将指纹提取到证书,如果您打开证书(在Windows系统上,只需在资源管理器中双击证书) - 选择选项卡"详细信息"然后单击"指纹".然后显示"指纹"并可以复制.复制指纹并删除所有空格......
*3):作为appid,您可以采用{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}形式的任何ID,因为APPID仅提供信息.使用命令"netsh http show sslcert",您可以查询整个机器上的绑定证书,并且将看到提供信息,哪个appid绑定到哪个证书(在实践中没有真正的帮助顺便说一句)在我的情况下,我已经拿了(从VS生成)我的Web服务应用程序的GUID
小智 9
我一直在与错误1312作斗争,为我修复的是将mmc中的证书导入为.p12文件而不是.crt.如果您使用OpenSSL创建它,那么在创建.crt后,请执行以下操作:
pkcs12 -export -in server.crt -inkey server.key -name “Your Name” -out server.p12
Run Code Online (Sandbox Code Playgroud)
如上所述.当您在mmc中导入它时,它将被称为"个人信息交换"文件(显然.pfx文件也可以工作).
我是新手编写服务器和处理SSL,我不知道为什么会这样,但我希望它有所帮助.
问题出在第 4 步。我使用根证书中的指纹作为 certhash 中的值。为了解决这个问题,我不得不回到 MMC 并刷新证书(本地计算机)-->个人-->证书文件夹。然后使用由根证书颁发机构“颁发”的证书中的指纹。
小智 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
Run Code Online (Sandbox Code Playgroud)
适用于CER/DER文件.
我遇到了同样的问题并使用以下命令解决了导入证书的问题:
c:> certutil -importPFX certname.pfx
现在使用以下命令显示证书:
c:> certutil -store my
在此命令之前,证书不会出现
这似乎是显而易见的;不过,我认为这可以节省一些人的头痛时间。我已在我的个人证书文件夹(针对个人计算机帐户)下导入了一个扩展名为 .cer 的文件。一段时间后,我意识到我需要导入扩展名为 *.pfx 的文件。修复了这个问题,瞧\xc3\xa0!问题解决了!
\n| 归档时间: |
|
| 查看次数: |
74133 次 |
| 最近记录: |