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

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

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

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

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

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

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

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

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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