Как и зачем я создал библиотеку проверки сертификатов
Обо мне
Я профессиональный разработчик программного обеспечения
Проблема, которую я хотел решить
Мне пришлось придумать замену библиотеке C, чтобы проверить, действительны ли представленные сертификаты, я выбрал python.
Что такое библиотека проверки сертификатов?
Я создаю небольшую библиотеку для проверки сертификата X509.
Стек технологий
Python3, OpenSSL, регулярное выражение
Процесс создания библиотеки проверки сертификатов
Пришлось искать все существующие библиотеки, которые могли бы облегчить мою работу, я нашел библиотеку python OpenSSL, которая значительно упростила мою задачу. У него были методы для анализа сертификата, доступа к различным полям в сертификате.
Затем мне пришлось добавить недостающую часть, которой на удивление не было в библиотеке OpenSSL, что меня очень шокировало, учитывая важность сертификатов.
Проблемы, с которыми я столкнулся
- Я не мог найти прямого способа проверить, является ли значение DNS или нет в python, в конце концов мне пришлось прибегнуть к регулярному выражению для проверки.
- Я был удивлен, обнаружив, что в библиотеке OpenSSL нет способа проверить, действителен ли сертификат до даты.
Основные выводы
Мне пришлось сделать эту библиотеку для устаревшей кодовой базы, где нам нужно было удалить зависимость от библиотеки C для той же цели, поэтому ошибки жестко закодированы, я бы хотел, чтобы у меня была возможность элегантно обрабатывать ошибки.
Советы и советы
Всегда документируйте свой код, нельзя отрицать, насколько это важно.
Используйте подсказку типа Python, это очень помогает при просмотре кода.
def get_fqdn(certificate) -> str:
fqdn_ip = certificate.get_subject().O
return fqdn_ip
Цель этой функции совершенно ясна, она возвращает строку, просто взглянув на определения, по сравнению с
def get_fqdn(certificate):
fqdn_ip = certificate.get_subject().O
return fqdn_ip
- Попробуйте написать функции, которые можно компоновать (я один из сторонников парадигмы функционального программирования), таким образом, вы можете повторно использовать эти функции.
Заключительные мысли и следующие шаги
Это был мой первый проект на питоне для работы, я старался писать простой и читаемый код, следил за PEP8. Я доволен тем, что получилось в итоге.