Я пытаюсь установить дружественное имя сертификата во время процесса запроса/принятия сертификата. Я понимаю, что это свойство хранилища microsoft, а не сертификат, и интересно, какой метод .net/C# можно использовать для его установки.Настройка Сертификат Дружественное имя
ответ
Итак, вот пример линии, как это сделать. Вам нужен CAPICOM от microsoft, который обертывает CryptoAPI.
Дружественное имя является свойством хранилища сертификатов, а не сертификата, поэтому этот код импортирует сертификат в хранилище сертификатов и устанавливает дружественное имя, как он это делает.
Код принимает два параметра: путь к файлу сертификата и дружественное имя, которое вы хотите установить.
Код: -
using System;
using System.Collections.Generic;
using System.Text;
using CAPICOM;
using System.Collections;
using System.Runtime.InteropServices;
namespace CertTool
{
class Program
{
const uint CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x20000;
const int CAPICOM_PROPID_FRIENDLY_NAME = 11;
const int CAPICOM_ENCODE_BINARY = 1;
static private String _currStoreName = "My";
static private String _FriendlyName = "Not Set";
static private String _CertPath = "C:\\test.cer";
static StoreClass _oCurrStore;
static ExtendedPropertyClass _friendlyProp;
static CertificateClass _certificate;
static ExtendedProperties _extendedProp;
static void Main(string[] args)
{
try
{
//Friendly name Argument
if (args.Length > 0)
{
_FriendlyName = args[0];
}
//Certpath argument
if (args.Length > 1)
{
_CertPath = args[1];
}
//Set and open the Store
_oCurrStore = new StoreClass();
_oCurrStore.Open(
CAPICOM_STORE_LOCATION.CAPICOM_LOCAL_MACHINE_STORE,
_currStoreName,
CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_EXISTING_ONLY |
CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
//Call the import certificate function
importCert();
}
catch(Exception ex){
Console.WriteLine(ex.Message);
Console.WriteLine(args[0]);
}
}
//Function import the certificate to the machine store and sets the friendly name
static bool importCert()
{
try
{
//Create Certificate Object
_certificate = new CertificateClass();
//Load the certificate into the obejct from file
_certificate.Load(_CertPath, "", CAPICOM_KEY_STORAGE_FLAG.CAPICOM_KEY_STORAGE_EXPORTABLE, CAPICOM_KEY_LOCATION.CAPICOM_LOCAL_MACHINE_KEY);
//Create extended property Class for friendly name
_friendlyProp = new ExtendedPropertyClass();
_friendlyProp.PropID = CAPICOM_PROPID.CAPICOM_PROPID_FRIENDLY_NAME;
_friendlyProp.set_Value(CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BINARY, _FriendlyName);
//Add extendedProp on cert object
_extendedProp = _certificate.ExtendedProperties();
//Set extendded prop to friendly name object
_extendedProp.Add(_friendlyProp);
_oCurrStore.Add(_certificate);
return true;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(_CertPath);
return true;
}
}
}
}
Хорошо, нашли ответ на этот вопрос здесь:
Привет,
Пожалуйста, обратите внимание на это, чтобы проверить, подходит ли он ваши потребности:
Когда вы запустите .net-код в среде X64, вы получите следующее сообщение об ошибке.
"Не удалось --Retrieving СОМ фабрику классов для компонента с CLSID ...."
Э.Г. на стороне сервера экспорта/импорта CMS .net code = «ExportSiteContentIncremental (...) Failed - Ошибка возврата фабрике COM-класса для компонента с CLSID {CA0752B3-021C-4F99-82E3-2C0F19C5E953} из-за следующей ошибки: 80040154 «.
РЕШЕНИЕ:
Возможным решением является изменение платформы вашего проекта от 'Any CPU' до 'X86' (в свойствах проекта, цель сборки/платформы)
ROOTCAUSE
ВСС Interop является управляемой сборкой с использованием 32-разрядной Framework, а dll содержит 32-битный COM-объект. Если вы запустите эту COM-библиотеку в 64-разрядной среде, вы получите сообщение об ошибке.
Используйте X509Certificate2.FriendlyName. Тем не менее, вы должны экспортировать сертификат в PFX/PKCS # 12:
X509Certificate2 certificate = new X509Certificate2(...);
certificate.FriendlyName = "MyName";
File.WriteAllBytes(path, certificate.Export(X509ContentType.Pkcs12));
- 1. Сертификат дружественное имя
- 2. winform дружественное имя класса
- 3. Как программно изменить дружественное имя аудиоустройства Windows?
- 4. Как установить дружественное имя учетной записи Google?
- 5. Как получить «дружественное» имя версии ОС?
- 6. Как получить дружественное имя монитора с winapi?
- 7. Дружественное имя на COM-порту в Java?
- 8. Получить дружественное имя для браузера/компьютера
- 9. Невозможно установить дружественное имя сертификата через PowerShell (доступ запрещен)
- 10. Как установить сертификат понятного имя
- 11. Как получить дружественное имя COM-порта в Windows?
- 12. Получение информации от MTP устройства: «дружественное имя» всегда пусто
- 13. Практический код-дружественное имя для не владеющих смарт-указатель
- 14. Как получить дружественное имя свойства CSLA вне класса?
- 15. Преобразование временной зоны в дружественное имя в PHP
- 16. Функция копирования HYPERLINK включить ссылку, а также дружественное имя
- 17. angularJS создать css дружественное имя класса из значения данных
- 18. Есть ли дружественное имя для этой структуры данных?
- 19. Преобразование String в Javascript-безопасное и дружественное имя переменной
- 20. Как установить дружественное имя для перечислений пользовательских свойств SharePoint?
- 21. Преобразование CamelCase в дружественное имя, то есть константы Enum; Проблемы?
- 22. URL Дружественное регулярное выражение
- 23. GWT SE дружественное приложение
- 24. Настройка SSL сертификат на AWS Elastic Beanstalk
- 25. Сертификат SSL Импорт и настройка для JBoss
- 26. Настройка SSL (самозаверенный сертификат) с котом
- 27. ssl настройка требуется сертификат и разработка
- 28. Winform bind выпадающий список из словаря изменить имя на дружественное имя
- 29. Создать дружественное сообщение mysql error
- 30. Настройка Git пользователя Имя
почему "вы должны экспортировать сертификат в PFX/PKCS # 12"? Любое понимание? Что, если это .CER? – VoodooChild