Ответ 1
То, что вы пытаетесь сделать, кажется правильным. Не могли бы вы повторить попытку после исправления http://support.microsoft.com/kb/981506 проблемы, которая точно соответствует вашим симптомам.
Мой сертификат хранится в специализированном хранилище в разделе "Сертификаты (локальный компьютер)" вместо "Личные".
Обычно, если сертификат находится под личным, я просто использую C: > netsh http add sslcert ipport: 0.0.0.0: certhash = appid = certstorename = MY
где, certstorename = MY уже принимается по умолчанию, если не указано.
Это работает нормально, пока нам не потребуется хранить сертификат в специализированном магазине, отличном от существующих личных, доверенных лиц, доверенных издателей и т.д. и т.д.
i проверил пространство имен System.Security.Cryptography.X509Certificates и выдает перечисление с именем StoreName со следующими значениями:
Я пробовал все из них в команде netsh как certstorename, и я всегда получаю эту ошибку:
Ошибка сертификата SSL, ошибка: 1312 Указанный сеанс входа в систему не существует. Возможно, оно уже завершено.
То, что вы пытаетесь сделать, кажется правильным. Не могли бы вы повторить попытку после исправления http://support.microsoft.com/kb/981506 проблемы, которая точно соответствует вашим симптомам.
Откройте свой сертификат и дважды проверьте, действительно ли он содержит PrivateKey. В зависимости от того, как вы экспортировали/импортировали его, оно могло быть усечено до общедоступных данных.
В проводнике просто дважды щелкните и убедитесь, что предупреждающая метка "этот сертификат содержит закрытый ключ" видна на первой вкладке, как раз под датами истечения срока действия
Огромным недостатком является то, что даже если PrivateKey не сохраняется правильно, значок закрытого ключа все равно будет отображаться в mmc, и он скажет: "Существует закрытый ключ, связанный с этим сертификатом". Чтобы точно знать, что закрытый ключ импортируется правильно,
Вы можете попробовать протестировать это с помощью вновь созданного самозаверяющего сертификата с помощью инструмента open-ssl. Задерживался на этом несколько недель, пока я не нашел этот пост stackoverflow, Вставка сертификата (с закрытым ключом) в Root, хранилище сертификатов LocalMachine не удалось в .NET 4
Еще один способ - убедиться, что сертификат находится на локальном компьютере (не пользователь), но похоже, что у вас уже есть эта часть.
У меня была эта проблема, когда сертификат был установлен в моем локальном хранилище пользователей, а не в локальном хранилище. Установка в localMachine/my
очистила его.