Зменшення розміру файлу CACertificates.p7b
1. Загальний опис
Файл CACertificates.p7b зберігає в собі сертифікати, що використовуються для валідації підписів/автентифікації користувачів в реєстрах Платформи. Даний файл зберігається в ресурсі Secret системи OKD(Kubernetes). З часом розмір цього файлу перевищив 1 МіБ, що створює проблему «Secret exceeds max size», бо OKD(Kubernetes) дозволяє зберігати не більше 1 МіБ даних в цьому виді ресурсу.
Тому було створено інструкцію, яка пропонує розв’язання даної проблеми, шляхом зменшення розміру файлу CACertificates.p7b через його генерацію з попереднім видаленням старих сертифікатів.
2. Передумови
-
Середовище: Unix-подібна ОС, bash.
-
Пакет: openssl ≥ 3.1.4
-
Скрипт генерації CACertificates.p7b: compile-p7b.zip
3. Виконання
3.1. Підготовка .cer
-
Завантажте архів з скриптом генерації CACertificates.p7b та розпакуйте його. Створіть директорію .cer за шляхом знаходження скрипту генерації CACertificates.p7b.
-
Завантажте архів із сертифікатами з IIT за посиланням та розпакуйте архів в директорію .cer за шляхом знаходження скрипту генерації CACertificates.p7b.
-
Перевірте кожен сертифікат в директорії .cer на актуальність/необхідність та видаліть застарілі/непотрібні файли. Перевірити на файли можна двома шляхами:
-
Вручну:
-
Відкрити кожен сертифікат вручну через утиліту зчитування сертифікатів (на приклад у Windows) та перевірити, що поле “Valid from … to … ” є актуальним або чи є зазначений емітент необхідним.
-
Видалити неактуальні/непотрібні.
-
-
За допомогою скриптів у директорії .cer:
-
Відобразити всі неактуальні на сьогодні файли командою:
for f in *.cer; do if [ "$(openssl x509 -inform der -in "$f" -noout -enddate | cut -d= -f2 | xargs -I{} date -d "{}" +%s)" -lt "$(date +%s)" ]; then echo "$f"; fi; done
-
Видалити неактуальні на сьогоднішні сертифікати наступною командою:
for f in *.cer; do if [ "$(openssl x509 -inform der -in "$f" -noout -enddate | cut -d= -f2 | xargs -I{} date -d "{}" +%s)" -lt "$(date +%s)" ]; then rm "$f"; fi; done
-
-
3.2. Генерація CACertificates.p7b
-
У директорії скрипту генерації надайте права на його виконання:
chmod +x main.sh
-
Запустіть скрипт:
./main.sh
Результат — файл CACertificates.p7b у робочій папці.
-
Переконайтесь, що його розмір ≤ 1000 КБ наступною командою:
du -k CACertificates.p7b
Приклад виконання команди:
$ du -k CACertificates.p7b 724 CACertificates.p7b
Якщо ліміт перевищено — видаліть ще сертифікати в кроці 3.1 та повторіть крок 3.2.
3.3. Опціонально: Редагування CAs.json
Якщо з директорії .cer видалено всі сертифікати окремого емітента:
-
Завантажте актуальний CAs.json з IIT за посиланням.
-
Видаліть записи вилучених емітентів, щоб уникнути некоректних посилань.
3.4. Перевірка працездатності згенерованого CACertificates.p7b
-
Встановіть CACertificates.p7b (та, за потреби, CAs.json) на тестовий реєстр, таким чином запустивши build-pipeline реєстру.
-
Pod digital-signature-ops має перейти у Running без помилок.
Якщо підписи користувачів не проходять — перевірте, чи не видалено необхідний сертифікат, та повторіть генерацію.