:: Visual Foxpro, Foxpro for DOS
Импорт сертификатов
Victoriacom

Сообщений: 126
Дата регистрации: 08.12.2010
Здравствуйте!
Проблема такая: у клиента периодически "слетают" установленные ранее сертификаты (на нескольких пользователях).
Восстанавливаю их с помощью файла .PFX.
Это несколько геморройно: делаю импорт сертификата, задаю пароль, указываю место хранения (Личное),
подтверждаю пароль несколько раз. В общем куча ручных действий.
Вопрос такой: можно ли этот процесс как-то автоматизировать, используя этот файл PFX?
Кто-нибудь сталкивался?


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.
Ratings: 0 negative/0 positive
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.
- Обратите внимание на безопасность пароля и храните его в защищенном месте.
Ratings: 0 negative/1 positive
Re: Импорт сертификатов
pasha_usue

Сообщений: 3742
Откуда: Е-бург
Дата регистрации: 06.10.2006
Прекрасный код. Я даже ошибок не вижу. Только это Net библиотеки, а не COM.
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
_vit

Сообщений: 5257
Дата регистрации: 29.07.2002
Copilot после нескольких итераций предложил

local store, cert
* Create an instance of the X509Enrollment class
store = CreateObject("CAPICOM.Store")
store.Open( 2, "My", 0)
* Load the .pfx file
cert = CreateObject("CAPICOM.Certificate")
cert.LoadFromFile("path_to_certificate_file.pfx", "password", 1) && Replace "password" with the actual password of the .pfx file
* Add the certificate to the store
store.Add(cert)
* Clean up
store = null
cert = null
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
kornienko_ru
Автор

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Что за капилот Где его взять? Как запускать?
А я сам по онлайн-документации от MS что-то подобное настругал именно для сертификата типа pfx в своем https-сервере. Язык c#, но понять можно:
if(CerFile==""){
Console.WriteLine("The https-server cannot be started. Certificate was not found ");
}else{
try{
Cert = new X509Certificate2(CerFile);
}catch(Exception){
Console.WriteLine("The https-server cannot be started. Certificate error (");
Cert = null;
}
if(Cert!=null){
* . . . Работа с использованием сертификата
}
}
Да совершенно верно, выше у капилота CREATEOBJECT("System.Security.Cryptography.X509Certificates.X509Certificate2") используется полное название класса. Я в своем тексте использую просто X509Certificate2, т.к. в начале программы есть строчка using System.Security.Cryptography.X509Certificates;.
Пароль использовать не стал.... не увидел в нём смысла. Все проблемы с сертификатами у Victoriacom уверен именно в паролях. Сертификаты имеют ограниченный срок использования. Бесплатные - 90 дней. Платные по-моему 6 месяцев. По окончании срока автор вопроса видимо меняет сертификаты на новые. Код программ при этом не должен меняться.... разве что был изменён пароль на открытие сертификата.
P.S.
Еще такой момент. Зачем сертификат добавлять в хранилища? Я, например, его держу в исходном pfx-файле. Просто открываю этот файл и использую.



Исправлено 2 раз(а). Последнее : kornienko_ru, 30.10.24 06:37
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
Victoriacom

Сообщений: 126
Дата регистрации: 08.12.2010
ABB
* Создание объекта для работы с сертификатами
loStore = CREATEOBJECT("System.Security.Cryptography.X509Certificates.X509Store")
Выдает ошибку: класс не найден. Что еще нужно установить, чтобы заработало?


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
Victoriacom

Сообщений: 126
Дата регистрации: 08.12.2010
Попробовал ваш вариант, _vit.
_vit

local store, cert
* Create an instance of the X509Enrollment class
store = CreateObject("CAPICOM.Store")
store.Open( 2, "My", 0)
* Load the .pfx file
cert = CreateObject("CAPICOM.Certificate")
cert.LoadFromFile("path_to_certificate_file.pfx", "password", 1)
* Add the certificate to the store
store.Add(cert)
* Clean up
store = null
cert = null

Ругается на строке
cert.LoadFromFile("path_to_certificate_file.pfx", "password", 1)
0x80020006: Unknown name


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
Victoriacom

Сообщений: 126
Дата регистрации: 08.12.2010
Попробовал ваш вариант, _vit.
_vit

local store, cert
* Create an instance of the X509Enrollment class
store = CreateObject("CAPICOM.Store")
store.Open( 2, "My", 0)
* Load the .pfx file
cert = CreateObject("CAPICOM.Certificate")
cert.LoadFromFile("path_to_certificate_file.pfx", "password", 1)
* Add the certificate to the store
store.Add(cert)
* Clean up
store = null
cert = null

Ругается на строке
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). Теперь работает.

Проблема в том, что при выполнении опять начинаются вопросы: а не в реестр ли его записать, введите пароль, подтвердите пароль...
В общем всё то, от чего я хотел избавиться.


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
kornienko_ru
Автор

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Может это поможет.... то что касается метода load:
В оригинале: learn.microsoft.com
Коряво переведенный: learn.microsoft.com
На сколько я понял.... пароль должен заканчиваться символом NULL.

То, что касается объекта Store, метода Add и прочих:
Оригинал: learn.microsoft.com
Русский: learn.microsoft.com
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
kornienko_ru
Автор

Сообщений: 415
Откуда: Владивосток
Дата регистрации: 06.09.2015
Еще такой момент по последнему цифровому параметру.
Если его вообще не указывать, то должны действовать вполне разумные значения по умолчанию. Пробовали совсем не указывать битовые маски?
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
Victoriacom

Сообщений: 126
Дата регистрации: 08.12.2010
kornienko_ru
Может это поможет.... то что касается метода load:
В оригинале: learn.microsoft.com
Коряво переведенный: learn.microsoft.com
На сколько я понял.... пароль должен заканчиваться символом NULL.

То, что касается объекта Store, метода Add и прочих:
Оригинал: learn.microsoft.com
Русский: learn.microsoft.com
Да, спасибо, я уже гулял по этим ссылкам. Всё работало только с кучей ненужных вопросов от CAPICOM. Я уже писал об этом.
Сейчас доигрался: теперь и этот вариант - oStore = CREATEOBJECT("CAPICOM.Store") - выдает ошибку: the store object does not represent an opened certificate store.
Переустанавливать CAPICOM SDK?
Начинаю добивать систему...


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.




Исправлено 1 раз(а). Последнее : Victoriacom, 05.11.24 12:29
Ratings: 0 negative/0 positive
Re: Импорт сертификатов
Victoriacom

Сообщений: 126
Дата регистрации: 08.12.2010
Собственно что произошло, почему у меня всё упало.
Нашел статью:
"Как исправить ошибки, связанные с System.Security.Cryptography.X509Certificates.dll? [РЕШЕНО]"
Использовал по их совету программу "WinThruster 2023". После этого всё перестало работать.
Делал восстановление системы с контрольной точки. Не помогло. Переустанавливал CAPICOM, ещё что-то... В общем, повоевал день на славу.
Как заработал oStore = CREATEOBJECT("CAPICOM.Store") не заметил. Но заработал.
Ещё раз повторюсь: пример _vit работает. Но эти запросы паролей и пр. мне совсем не нужны. То же самое происходит, если запустить импорт двойным кликом по файлу PFX.

Тут подкинули идею проследить изменения в реестре после запуска импорта. Буду пробовать.


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.
Ratings: 0 negative/0 positive


Эта тема закрыта.

On-line: 40 (Гостей: 40)

© 2000-2025 Fox Club 
Яндекс.Метрика