🔗Чё это я вам всё за жизнь да за жизнь и мои пиздострадания. Давайте немного за айти.
Существует такой стандарт как PGP. Если вы работаете в этом вашем айти, то наверняка слышали или даже пользовались.
Кратко для тех кто не в теме: давным-давно, когда я даже не умел читать, один дядя написал одноименную програмку, которая позволяет подписывать и шифровать произвольные данные. На тот момент утилита оказалась на столько прорывной, удобной и безопасной, что завоевала популярность, получила множество реализаций (самая популярная - GPG) и даже стандарт RFC4880. Удобство встраивания, разнообразие поддерживаемых функций и отсутствие других альтернатив привело к повсеместному распространению этого стандарта.
Всё бы хорошо, но в 2019-м году это всё смотрится безумным говном. Устаревшие алгоритмы шифрования, хреновая не безопасная by design реализация встраивания (в прошлом году была прекрасная история про то как 90% почтовых клиентов позволяли прочитать зашифрованную PGP переписку -
https://efail.de ), кривая архитектура обмена ключа, приложения с уебищным по меркам 2019 юзабилити, ну и можете почитать другие аргументы против в гугле по запросу "вай пгп из сакс".
Это короче предыстория. А теперь по теме. Захотелось мне подписывать мои коммиты на гитхабе. Точнее не то чтобы мне это сильно хочется, но у некоторых опенсорс проектов это обязательное требование. А подпись коммитов конечно же делается через PGP. Я уже было смирился и начал дрочить свой PGP ключик в попытке засунуть его на аппаратный носитель, наладить безопасные бэкапы и современные алгоритмы вместо RSA в 2019-м году, но случайно узнал, что нынче гит умеет подписывать коммиты не только с помощью PGP но и с помощью x509 сертификатов. По иронии судьбы, я как раз работаю в конторе, бизнес которой строится на работе с x509 сертификатами, так что захотелось изучить. Ну не сказать, что всё плохо, но всё как-то "никак".
Под винды и макось есть очень простая утилита от гитхаба, которая просто умеет из системного кейчена брать сертификат с ключем и им подписывать. Под линукс есть кросплатформенная утилита gpgsm, которая суть клон gpg, только умеет сертификаты вместо pgp ключей и соответственно s/mime и CMS. Тоесть юзабилити где-то там же где и было, только теперь ещё и инструмент задизайненый под другие стандарты. Конечно, я так и не смог запихать в него x509 сертификат на базе ed25519, хотя gpg вроде поддерживает ключи ed25519, но видимо не в сертификатах. А может у меня версия старая или руки кривые.
Подписываются коммиты в целом без проблем, вот только тот же гитхаб видит, что коммит подписанный, но не показывает красивую зеленую плашку, что авторство коммита проверено. Для gpg ключа можно добавить ключ в список своих через веб интерфейс, а для сертификатов такой тычки нет. Может быть можно попытаться подписать сертификатом, выданым корневым CA для юзера с тем же емейлом, что и логин на гитхабе, но звучит безумно и скорее всего не поможет.
А жаль. Короче пока мы страдаем и дрочим gpg, но с надеждой смотрим в будущее.