Импорт сертификатов | |
---|---|
Victoriacom Сообщений: 126 Дата регистрации: 08.12.2010 |
Здравствуйте!
Проблема такая: у клиента периодически "слетают" установленные ранее сертификаты (на нескольких пользователях). Восстанавливаю их с помощью файла .PFX. Это несколько геморройно: делаю импорт сертификата, задаю пароль, указываю место хранения (Личное), подтверждаю пароль несколько раз. В общем куча ручных действий. Вопрос такой: можно ли этот процесс как-то автоматизировать, используя этот файл PFX? Кто-нибудь сталкивался? ------------------ Алло, это прачечная? Да, это прачечная. Здравствуйте. ![]() |
Re: Импорт сертификатов | |
---|---|
ABB Сообщений: 166 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Chat GPT предлагает:
Чтобы автоматизировать установку сертификатов из файла PFX с помощью Visual FoxPro, вы можете воспользоваться вызовом COM-объектов Windows для работы с сертификатами. Вот примерный подход: 1. Создайте новый проект Visual FoxPro. 2. Используйте следующий код для импорта сертификата: LOCAL loStore, loCert, lcPfxPath, lcCertPassword lcPfxPath = "C:\path\to\your\certificate.pfx" lcCertPassword = "your_password" * Создание объекта для работы с сертификатами loStore = CREATEOBJECT("System.Security.Cryptography.X509Certificates.X509Store") loStore.Open(0) && Открывает хранилище "My" * Создание объекта сертификата loCert = CREATEOBJECT("System.Security.Cryptography.X509Certificates.X509Certificate2") * Импортируем PFX файл loCert.Import(lcPfxPath, lcCertPassword, 0) * Добавляем сертификат в хранилище loStore.Add(loCert) * Закрываем хранилище loStore.Close() MESSAGEBOX("Сертификат успешно установлен.") 3. Настройте параметры безопасности: Убедитесь, что у вас есть соответствующие права для установки сертификатов. 4. Запустите код: Сохраните код и выполните его в вашем проекте Visual FoxPro. 5. Проверьте установку: Убедитесь, что сертификат установлен, проверив его с помощью "Управление сертификатами" (certmgr.msc). Замечания: - Убедитесь, что у вас настроены все необходимые библиотеки .NET, если вы планируете использовать COM-объекты в Visual FoxPro. - Обратите внимание на безопасность пароля и храните его в защищенном месте. ![]() |
Re: Импорт сертификатов | |
---|---|
pasha_usue Сообщений: 3742 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Прекрасный код. Я даже ошибок не вижу. Только это Net библиотеки, а не COM.
![]() |
Re: Импорт сертификатов | |
---|---|
_vit Сообщений: 5257 Дата регистрации: 29.07.2002 |
Copilot после нескольких итераций предложил
![]() |
Re: Импорт сертификатов | |
---|---|
kornienko_ru Автор Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Что за капилот
![]() А я сам по онлайн-документации от MS что-то подобное настругал именно для сертификата типа pfx в своем https-сервере. Язык c#, но понять можно:
Пароль использовать не стал.... не увидел в нём смысла. Все проблемы с сертификатами у Victoriacom уверен именно в паролях. Сертификаты имеют ограниченный срок использования. Бесплатные - 90 дней. Платные по-моему 6 месяцев. По окончании срока автор вопроса видимо меняет сертификаты на новые. Код программ при этом не должен меняться.... разве что был изменён пароль на открытие сертификата. P.S. Еще такой момент. Зачем сертификат добавлять в хранилища? Я, например, его держу в исходном pfx-файле. Просто открываю этот файл и использую. Исправлено 2 раз(а). Последнее : kornienko_ru, 30.10.24 06:37 ![]() |
Re: Импорт сертификатов | |
---|---|
Victoriacom Сообщений: 126 Дата регистрации: 08.12.2010 |
Выдает ошибку: класс не найден. Что еще нужно установить, чтобы заработало? ------------------ Алло, это прачечная? Да, это прачечная. Здравствуйте. ![]() |
Re: Импорт сертификатов | |
---|---|
Victoriacom Сообщений: 126 Дата регистрации: 08.12.2010 |
Попробовал ваш вариант, _vit.
Ругается на строке cert.LoadFromFile("path_to_certificate_file.pfx", "password", 1) 0x80020006: Unknown name ------------------ Алло, это прачечная? Да, это прачечная. Здравствуйте. ![]() |
Re: Импорт сертификатов | |
---|---|
Victoriacom Сообщений: 126 Дата регистрации: 08.12.2010 |
Попробовал ваш вариант, _vit.
Ругается на строке cert.LoadFromFile("path_to_certificate_file.pfx", "password", 1) 0x80020006: Unknown name ------ Изменил cert.LoadFromFile на cert.Load и store.Open( 2, "My", 0) на store.Open( 2, "My", 2). Теперь работает. Проблема в том, что при выполнении опять начинаются вопросы: а не в реестр ли его записать, введите пароль, подтвердите пароль... В общем всё то, от чего я хотел избавиться. ------------------ Алло, это прачечная? Да, это прачечная. Здравствуйте. ![]() |
Re: Импорт сертификатов | |
---|---|
kornienko_ru Автор Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Может это поможет.... то что касается метода load:
В оригинале: learn.microsoft.com Коряво переведенный: learn.microsoft.com На сколько я понял.... пароль должен заканчиваться символом NULL. То, что касается объекта Store, метода Add и прочих: Оригинал: learn.microsoft.com Русский: learn.microsoft.com ![]() |
Re: Импорт сертификатов | |
---|---|
kornienko_ru Автор Сообщений: 415 Откуда: Владивосток Дата регистрации: 06.09.2015 |
Еще такой момент по последнему цифровому параметру.
Если его вообще не указывать, то должны действовать вполне разумные значения по умолчанию. Пробовали совсем не указывать битовые маски? ![]() |
Re: Импорт сертификатов | |
---|---|
Victoriacom Сообщений: 126 Дата регистрации: 08.12.2010 |
Да, спасибо, я уже гулял по этим ссылкам. Всё работало только с кучей ненужных вопросов от CAPICOM. Я уже писал об этом. Сейчас доигрался: теперь и этот вариант - oStore = CREATEOBJECT("CAPICOM.Store") - выдает ошибку: the store object does not represent an opened certificate store. Переустанавливать CAPICOM SDK? Начинаю добивать систему... ------------------ Алло, это прачечная? Да, это прачечная. Здравствуйте. Исправлено 1 раз(а). Последнее : Victoriacom, 05.11.24 12:29 ![]() |
Re: Импорт сертификатов | |
---|---|
Victoriacom Сообщений: 126 Дата регистрации: 08.12.2010 |
Собственно что произошло, почему у меня всё упало.
Нашел статью: "Как исправить ошибки, связанные с System.Security.Cryptography.X509Certificates.dll? [РЕШЕНО]" Использовал по их совету программу "WinThruster 2023". После этого всё перестало работать. Делал восстановление системы с контрольной точки. Не помогло. Переустанавливал CAPICOM, ещё что-то... В общем, повоевал день на славу. Как заработал oStore = CREATEOBJECT("CAPICOM.Store") не заметил. Но заработал. Ещё раз повторюсь: пример _vit работает. Но эти запросы паролей и пр. мне совсем не нужны. То же самое происходит, если запустить импорт двойным кликом по файлу PFX. Тут подкинули идею проследить изменения в реестре после запуска импорта. Буду пробовать. ------------------ Алло, это прачечная? Да, это прачечная. Здравствуйте. ![]() |
© 2000-2025 Fox Club  |