Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480

Корневой сертификат в IE и Firefox

18.05.2017, 06:16. Показов 1197. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть рутина связанная с необходимостью устанавливать корневые сертификаты в IE и Firefox (сертификат используется в системе контентной фильтрации с использованием MITM). Пользователей много, некоторые начинают плакать, когда пытаешься им объяснить алгоритм действий (я ленивый страшный бородатый дядька, пользователи - женщины и дети). GPO проблему решает, но много компов вне политики, и еще больше учетных записей.
Хотелось бы данный процесс превратить в выдачу программы, мол, тыкай и живи счастливо.

Прошу откликнуться тех кто сталкивался с данной проблемой, ну или тех кто знает направление в котором нужно идти (сейчас передо мной ни дорог, ни тропинок, ни следов).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2017, 06:16
Ответы с готовыми решениями:

В FireFox при открытии любого сайта всплывает сообщение про недействительный сертификат
Вот оно:

Сертификат безопасности сайта не является доверенным! Вы попытались перейти на сайт www.google.ru, но сервер предоставил сертификат, выданный организа
Сертификат безопасности сайта не является доверенным! Вы попытались перейти на сайт www.google.ru, но сервер предоставил сертификат,...

Можно ли как-то перенести закладки с браузера Firefox c ПК, на Андройд браузер (не Firefox)?
Ребят, всем привет! Подскажите, можно ли как-то перенести закладки с браузера Firefox c ПК, на Андройд браузер? p.s. Синхронизацию...

5
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.05.2017, 08:28
Когда занимался этой проблемой, делал так:

Для IE и некоторых других браузеров достаточно установить сертификат в стандартное хранилище "Root".
См. функции CertOpenStore, CertCreateCertificateContext и CertAddCertificateContextToStore.

Для Firefox сложнее, пришлось пересобрать Mozilla NSS и тянуть ее с собой в проекте. А установка
сертификата делается через NSS\certutil.exe, причем сам сертификат устанавливается в
соответствующий профиль Firefox, т.е. путь к профилю еще нужно найти.

Нечто подобное делается для Opera, Yandex, Maxthon и т.д.
1
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
21.05.2017, 18:00  [ТС]
для IE сделал установку и удаление сертификата X509 в кодировке DER
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <windows.h>
#include <stdio.h>
#include <locale.h>
#include <wincrypt.h>
 
DWORD filesize(FILE *fp)
{
    DWORD save_pos, size_of_file;
    save_pos = ftell(fp);
    fseek(fp, 0L, SEEK_END);
    size_of_file = ftell(fp);
    fseek(fp, save_pos, SEEK_SET);
    return(size_of_file);
}
 
int main(int argc, char** argv)
{
    setlocale(LC_ALL, "Russian");
    
    HCERTSTORE hSysStore = NULL;                    // для дескриптора хранилища сертификатов
 
    // открытие хранилища сертификатов
    if(hSysStore = CertOpenStore(                   // если успешно. то функция возвращает дескриптор хранилища сертификатов,
                                                    // в противном случае NULL
                    CERT_STORE_PROV_SYSTEM,         // данный тип поставщика хранилища
                    0,                              // не нуждается в кодировании
                    NULL,                           // используется по умолчанию HCRYPTPROV
                    CERT_SYSTEM_STORE_CURRENT_USER, // устанавливает локализацию хранилища в регистр локализации
                    L"Root"))                       // имя хранилища (UNICODE-строка), в данном случае "доверенные корневые центры сертификации"
    {
        printf("Успешное открытие системного хранилища сертификатов.\n");
        // осуществляем поиск сертификата в хранилище корневых сертификатов по имени сертификата
        PCCERT_CONTEXT  pDesiredCert = NULL;
        if(pDesiredCert=CertFindCertificateInStore(     // возвращает стуктуру контекста сертификата
                        hSysStore,                      // дескриптор хранилища сертификатов, по уоторому осуществляется поиск
                        X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,    // используемый тип сертификата
                        0,                              // не нуждается в флагах (в редких случаях должен быть отличен от нуля)
                        CERT_FIND_SUBJECT_STR_A,        // задаем параметры поиска (указывает на тип строки имени сертификата)
                        "e2guardian",                   // указатель на данные типа соответсвующие/заданные заданные предыдущим параметром (имя сертификата)
                        NULL))                          // указтель на последнюю структуру контекста сертификата возвращенную этой функцией (для перечесления сертификатов)
        {
            printf("Сертификат найден. \n");
            // удляем сертификат из хранилища
            BOOL err;
            if (err = CertDeleteCertificateFromStore(pDesiredCert))
            {
                printf("\tСертификат удален из хранилища. \n");
            }
            else 
            {
                printf("\tОшибка удаления сертификата. \n");
                printf("\t\tКод ошибки: %d\n", (int)err);
            }
            // освобождаем контекст сертификата
            if(pDesiredCert) CertFreeCertificateContext(pDesiredCert);
        }
        else
        {
            printf("Сертификат не найден.\n");
            // создаем контекст сертификата из файла X509 в кодировке DER
            FILE *hFile;
            if (hFile=fopen("cert.cer", "r+b"))
            {
                // printf("\t\tcer-файл открыт\n");
                DWORD fsize=filesize(hFile);
                BYTE rgbFile[fsize];
                fread(rgbFile, fsize, 1, hFile);
                fclose(hFile);
                PCCERT_CONTEXT pCertContext = NULL;
                if (pCertContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, rgbFile, fsize))
                {
                    printf("\t\tКонтекст создан\n");
                    // добавляем созданный контекст сертификата в хранилище
                    if (CertAddCertificateContextToStore(hSysStore, pCertContext, CERT_STORE_ADD_NEW, NULL))
                        printf("\t\tСертификат добавлен в хранилище\n");
                    else printf("\t\tСертификат не был добавлен в хранилище\n");
                    if(pCertContext) CertFreeCertificateContext(pCertContext);  
                }   
                else printf("\t\tОшибка при создании контекста\n");
            }
            else printf("\t\tОшибка открытия cer-файла\n");
        }
        // закрытие хранилища сертификатов
        if(CertCloseStore(hSysStore, CERT_CLOSE_STORE_CHECK_FLAG)) printf("Успешное закрытие системного хранилища сертификатов.\n");
        else printf("Ошибка закрытия системного хранилища сертификатов!\n");
    }
    else
    {
        printf("Ошибка открытия системного хранилища сертификатов!\n");
        return 1;
    }
    return 0;
}


Есть какой-нибудь способ сделать "тихую установку", т.е. без запроса разрешения со стороны менеджера сертификатов?
Миниатюры
Корневой сертификат в IE и Firefox  
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
21.05.2017, 20:53
Хм... Я делаю CertOpenStore примерно так:
C++
1
2
3
4
5
6
7
8
 
HCERTSTORE const hStore = CertOpenStore(
    CERT_STORE_PROV_SYSTEM_W,
    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
    NULL,
    CERT_STORE_OPEN_EXISTING_FLAG | CERT_SYSTEM_STORE_LOCAL_MACHINE,
    L"Root"
);
И при установке не выскакивает никаких окошек (проверял на XP-Win8, Client/Server, 32-64).
1
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
22.05.2017, 11:03  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
CERT_STORE_OPEN_EXISTING_FLAG | CERT_SYSTEM_STORE_LOCAL_MACHINE,
с этой строкой у меня тоже не запрашивает,но для установки требуются админские права (т.к. LOCAL_MACHINE)
конечно, пользователь может и нажать лишний раз кнопочку "Да", ... и, наверное, пока с этим заморачиваться не стоит. если станет критично попробую с перехватом сообщений от менеджера

Добавлено через 13 часов 39 минут
Вопрос по NSS!
Есть ли разница какую версию использовать?

Нашел два варианта.
1. Последний релиз NSS 3.11.4 (ноябрь 2006):
www-archive.mozilla.org/.../nss/
2. Не релиз, но исходники (июнь 2016):
dxr.mozilla.org/.../nss
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.05.2017, 11:12
Последний раз этой темой я занимался в конце 2013 - начале 2014 года, с той
поры многое могло измениться. Так что лучше проверять самому.
Возможно, придется использовать разные NSS для разных версий Firefox
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2017, 11:12
Помогаю со студенческими работами здесь

Создание расширения для Firefox. Перевод расширений Chrome на Firefox
Здесь обсуждается процесс создания расширений для Mozilla Firefox, а также портинг из Chrome. Добавлено через 17 минут Товаращи...

Частые падения Mozilla Firefox - прекращена работа программы Plugin Container for Firefox
Как это исправить, падает пару раз за час:

Selenium Firefox driver и плагины Firefox
Если в селениуме используется файерфокс драйвер, то возможно ли его запускать с плагинами? Т.к. селениум, как буд-то не учитывает...

Корневой каталог
Есть 2 -ве папки, вторая вложена в корневую www. В обоих есть хтассе, содержит: Options -Indexes AddDefaultCharset utf-8 ...

Корневой каталог
Ребят подскажите пожалуйста, есть вопрос. Вот предположим в пхп можно указывать путь к файлу не полностью там можно указать вместо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru