Обновление корневых сертификатов на Linux

Thank you for reading this post, don't forget to subscribe!

От кор­не­вых сер­ти­фи­ка­тов в систе­ме может зави­сеть пра­виль­ная рабо­та при обра­ще­нии к ресур­сам, кото­рые рабо­та­ют по зашиф­ро­ван­но­му кана­лу свя­зи. Если дан­ные сер­ти­фи­ка­ты уста­ре­ют, мы можем столк­нуть­ся с рядом проблем:

  • Не откры­ва­ют­ся или выда­ют пре­ду­пре­жде­ние без­опас­но­сти неко­то­рые (или все) сай­ты, рабо­та­ю­щие по https.
  • Некор­рект­ная рабо­та отдель­ных приложений.
  • Ошиб­ки при под­клю­че­нии по ssh.

Это при­мер оши­бок, кото­рый не пре­тен­ду­ет на свою пол­но­му. Чаще все­го, про­бле­мы встре­ча­ют­ся на систе­мах, сня­тых с обслуживания.

Установка из репозитория

Самый про­стой спо­соб, кото­рый нуж­но попро­бо­вать, уста­но­вить сер­ти­фи­ка­ты из офи­ци­аль­но­го репо­зи­то­рия систе­мы. В зави­си­мо­сти от ее типа, наши коман­ды будут немно­го отличаться.

а) для систем на базе DEB (Debian, Ubuntu, Mint):

apt install ca-certificates

update-ca-certificates

б) для систем на базе RPM (Rocky Linux, CentOS):

yum install ca-certificates

update-ca-trust

Гото­во.

Если нам пове­зет и в репо­зи­то­рии будут обнов­лен­ные кор­не­вые цен­тры, наша рабо­та закон­че­на. Ина­че, уста­нав­ли­ва­ем сер­ти­фи­ка­ты вручную.

Загрузка пакета с сертификатами

Уста­нов­ка из репо­зи­то­рия может не дать нуж­но­го эффек­та, если в нем нахо­дят­ся не самые све­жие сер­ти­фи­ка­ты или наша систе­ма силь­но уста­ре­ла или не име­ет выхо­да в Интернет.

В этом слу­чае нам нуж­но загру­зить пакет с кор­не­вы­ми сер­ти­фи­ка­та­ми вруч­ную. Раз­бе­рем при­мер на систе­ме Ubuntu. В офи­ци­аль­ном репо­зи­то­рии или в поис­ко­вой систе­ме нахо­дим пакет для загруз­ки, напри­мер, по ссыл­ке ftp.ru.debian.org/debian/pool/main/c/ca-certificates копи­ру­ем ссыл­ку на файл с послед­ней вер­си­ей сер­ти­фи­ка­тов, и загру­жа­ем его на наш компьютер:

wget http://ftp.ru.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20210119_all.deb

Полу­чен­ный пакет уста­нав­ли­ва­ем в системе:

dpkg -i ca-certificates_20210119_all.deb

И обнов­ля­ем кор­не­вые сертификаты:

update-ca-certificates

Установка вручную

Выше рас­смот­ре­ны самые удоб­ные спо­со­бы обнов­ле­ния кор­не­вых сер­ти­фи­ка­тов. Но мы можем столк­нуть­ся с ситу­а­ци­ей, когда в предо­став­ля­е­мых офи­ци­аль­ных паке­тах не ока­жет­ся обнов­лен­но­го сер­ти­фи­ка­та. Напри­мер, на момент напи­са­ния дан­ной инструк­ции у систем на базе Deb не ока­за­лось ново­го сер­ти­фи­ка­та для Let's Encrypt, а ста­рый закон­чил свое дей­ствие 30 сен­тяб­ря 2021 года.

В дан­ном слу­чае, мы можем уста­но­вить любой нуж­ный нам сер­ти­фи­кат рука­ми. Для это­го ска­ча­ла нахо­дим его и копи­ру­ем — при­ве­дем при­мер с Let's Encrypt. На стра­ни­це letsencrypt.org/ru/certificates мы можем уви­деть ссыл­ки на кор­не­вые сер­ти­фи­ка­ты. Допу­стим, нам нужен Let’s Encrypt Authority X3 (Signed by ISRG Root X1), кото­рый досту­пен по ссыл­ке letsencrypt.org/certs/letsencryptauthorityx3.pem.txt. Копи­ру­ем после­до­ва­тель­ность и созда­ем файл на компьютере:

vi /usr/share/ca-certificates/letsencryptauthorityx3.pem


Откры­ва­ем на редак­ти­ро­ва­ние файл:

vi /etc/ca-certificates.conf

И добав­ля­ем в него стро­ку с ука­за­ни­ем на создан­ный файл:

letsencryptauthorityx3.pem

Но в моем слу­чае был про­пи­сан так­же файл с уста­рев­шим сер­ти­фи­ка­том — ука­за­ние на него нуж­но закомментировать:

#mozilla/DST_Root_CA_X3.crt

После чего обно­вить сертификаты:

update-ca-certificates --fresh

* опция fresh поз­во­лит не толь­ко доба­вить, но и уда­лить все­го того, что нет в кон­фи­гу­ра­ци­он­ном фай­ле. Для нас это необ­хо­ди­мо, что­бы убрать уста­рев­ший сертификат.

Мы долж­ны уви­деть что-то на подобие:

гото­во