Как зарегистрировать сертификат в порт, когда сертификат находится в пользовательском месте, используя netsh - PullRequest
13 голосов
/ 07 августа 2009

Мой сертификат хранится в пользовательском хранилище в разделе «Сертификаты (локальный компьютер)», а не в разделе «Личный».

Обычно, если сертификат находится под личным, я просто использую C:> netsh http add sslcert ipport: 0.0.0.0: certhash = appid = certstorename = MY

где, certstorename = MY уже предполагается по умолчанию, если не указано.

Это работает нормально, пока нам не потребуется хранить сертификат в обычном магазине, кроме существующих личных, доверенных лиц, доверенных издателей и т. Д. И т. Д.

  • Если бы мы назвали наш новый магазин "мой магазин сертификатов", как бы выглядела новая команда netsh?
  • как слово «МОЙ» отображается в «Личном» магазине? есть ли где-нибудь словарь, который отображает их?

Я проверил пространство имен System.Security.Cryptography.X509Certificates и обнаружил перечисление StoreName со следующими значениями:

  • Адресная книга - хранилище сертификатов X.509 для других пользователей.
  • AuthRoot - хранилище сертификатов X.509 для сторонних центров сертификации (ЦС).
  • CertificateAuthority - хранилище сертификатов X.509 для промежуточных центров сертификации (CA).
  • Disallowed - Хранилище сертификатов X.509 для отозванных сертификатов.
  • My - Хранилище сертификатов X.509 для личных сертификатов.
  • Root - хранилище сертификатов X.509 для доверенных корневых центров сертификации (CA).
  • TrustedPeople - Хранилище сертификатов X.509 для напрямую доверенных людей и ресурсов.
  • TrustedPublisher - хранилище сертификатов X.509 для напрямую доверенных издателей.

Я попробовал все из них по команде netsh как certstorename, и я всегда получаю эту ошибку:

Ошибка добавления сертификата SSL, ошибка: 1312 Указанный сеанс входа не существует. Возможно, оно уже было прекращено.

Ответы [ 4 ]

0 голосов
/ 12 декабря 2013

У меня была эта проблема, когда сертификат был установлен в моем локальном хранилище пользователей вместо локального компьютера . Установка в localMachine/my прояснила.

0 голосов
/ 12 июля 2012

Откройте свой сертификат и дважды проверьте, действительно ли он содержит PrivateKey. В зависимости от того, как вы экспортировали / импортировали его, он мог быть усечен до общедоступных данных.

В проводнике, просто дважды щелкните и проверьте, видна ли метка предупреждения «этот сертификат содержит закрытый ключ» на первой вкладке, под датами окончания срока действия

0 голосов
/ 20 февраля 2013

Огромный недостаток заключается в том, что даже если PrivateKey не сохранен должным образом, значок закрытого ключа все равно будет отображаться в mmc и сообщать: «С этим сертификатом связан закрытый ключ». Чтобы точно знать, что закрытый ключ импортируется должным образом,

  • Щелкните правой кнопкой мыши C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys и запишите, сколько файлов находится в папке (здесь хранятся закрытые ключи).
  • Импорт файла pfx / однако вы добавляете сертификат / ключ в хранилище
  • Снова проверьте количество файлов в этой папке, должно быть 1 файл больше , чем раньше

Вы можете попробовать проверить это с помощью вновь созданного, самозаверяющего сертификата с помощью инструмента, такого как open-ssl. Застрял на этом в течение нескольких недель, пока я не нашел этот постопотоковый пост, Вставка сертификата (с приватным ключом) в Root, хранилище сертификатов LocalMachine завершилось неудачей в .NET 4

Еще один недостаток - убедиться, что сертификат находится на локальном компьютере (не пользователь), но, похоже, вы уже выполнили эту часть.

0 голосов
/ 26 августа 2011

То, что вы пытаетесь сделать, кажется правильным. Не могли бы вы повторить попытку после исправления http://support.microsoft.com/kb/981506 для проблемы, которая точно соответствует вашим симптомам.

...