• # macOS ou quand la fin du support d’une version coïncide avec l’expiration d’un certificat racine

    Posté par (site web personnel, Mastodon) . En réponse au journal Certificat expiré. Évalué à 10.

    Hier je bossais sur le portage de l’éditeur de niveau NetRadiant sur macOS (il faudra que je fasse un jour un journal sur cette (més)aventure, c’est une véritable descente en enfer), et le petit coup de barre de fer dans les rotules à la date d’hier, le voici :

    2021年09月30日 19:24:41 +0200 <illwieckz> it looks like I managed to properly workaround the lack of OpenGL context sharing on macOS GtkGLExt with NetRadiant
    2021年09月30日 19:26:06 +0200 <illwieckz> lol macos
    2021年09月30日 19:26:10 +0200 <illwieckz> [ 0%] Performing update step for 'gtkglext'
    2021年09月30日 19:26:10 +0200 <illwieckz> fatal: unable to access 'https://gitlab.gnome.org/illwieckz/gtkglext.git/': SSL certificate problem: certificate has expired
    2021年09月30日 19:27:41 +0200 <illwieckz> exactly 1 minute [after] I get all features working on macos, I'm become unable to build the software because macos dediced a certificate is expired
    [...]
    2021年09月30日 19:27:48 +0200 <illwieckz> fun fact, it is not expired on linux
    2021年09月30日 19:28:28 +0200 <illwieckz> it expires en December 19, 2021
    2021年09月30日 19:28:40 +0200 <illwieckz> OR
    2021年09月30日 19:28:49 +0200 <illwieckz> maybe the autority certificate expired
    2021年09月30日 19:28:58 +0200 <illwieckz> the one bundled in macOS
    [...]
    2021年09月30日 19:29:52 +0200 <illwieckz> I'm impressed [by] how unforgiving it is
    2021年09月30日 19:30:00 +0200 <illwieckz> everytime I get a victory
    2021年09月30日 19:30:12 +0200 <illwieckz> I get smashed down
    [...]
    2021年09月30日 19:35:39 +0200 <illwieckz> for safari the certificate isn't expired...
    2021年09月30日 22:25:11 +0200 <illwieckz> it's possible the root certificate are obsoletes
    2021年09月30日 22:25:48 +0200 <illwieckz> I'm using macOS Mojave
    2021年09月30日 22:25:58 +0200 <illwieckz> support ends in September 2021
    2021年09月30日 22:26:11 +0200 <illwieckz> we are like, the last day of September 2021
    2021年09月30日 22:27:59 +0200 <illwieckz> it's already October 1th since 9 hours in some places
    2021年09月30日 22:28:43 +0200 <illwieckz> on my end those certificates stopped working 3 hours ago
    2021年09月30日 22:30:40 +0200 <illwieckz> but it's still September in Cupertino
    [...]
    2021年10月01日 00:32:20 +0200 <illwieckz> iMac-de-Thomas:macos-new illwieckz$ cat ~/.gitconfig
    2021年10月01日 00:32:20 +0200 <illwieckz> [http "https://gitlab.gnome.org"]
    2021年10月01日 00:32:20 +0200 <illwieckz> sslCAInfo = /Users/illwieckz/lets-encrypt-r4-cross-signed.pem
    2021年10月01日 00:32:20 +0200 <illwieckz> sslVerify = true
    2021年10月01日 00:32:52 +0200 <illwieckz> this is the way I worked around the macos letsencrypt bug for cloning from gitlab.gnome.org
    

    À la base j’ai cette installation de macOS pour travailler sur le port de NetRadiant sur macOS, maintenant j’en profite aussi pour compiler Unvanquished pour macOS, mais à la base, je n’avais cette installation de macOS que pour réaliser ce portage de NetRadiant. Je travaille sur ce portage de NetRadiant depuis 2018 au moins, et c’est tellement un enfer de travailler avec macOS que je préfère ne pas « changer une équipe qui gagne » et c’est toujours un macOS Mojave, il à jour de macOS et de Homebrew, mais j’ai pas monté les versions majeures depuis que je bricole avec.

    Et hier, le certificat racine IdentTrust DST Root ÇA X3 a expiré, et macOS Mojave considère désormais tous les certificats LetsEncrypt comme périmés, je ne peux donc plus cloner de dépôts depuis les forges gnome.gitlab.org ou sourceforge.net.

    Le truc c’est qu’à ce que j’ai compris, la fin de la prise en charge de macOS Mojave prend fin... ce premier octobre. Apple n’est donc probablement pas engagé à mettre à jour les certificats racines de macOS. J’ai essayé de le faire avec leur outil « trousseau » mais ajouter les certificats racines de LetsEncrypt et dire à macOS de leur faire confiance ne change rien. Techniquement, macOS Mojave a été en défaut de certificat fonctionnel une demi journée environ (selon le fuseau horaire) avant la fin de la prise en charge. Peut-être que chez Apple il s’est dit que ça n’en valait pas la peine.

    J’ai pu forcer le certificat racine de LetsEncrypt dans le fichier .gitconfig donc je vais pouvoir garder Mojave pour quelque temps encore...

    Bizarrement, Safari ne râle pas, il a probablement son propre trousseau (comme Firefox qui ne râle pas non-plus), mais les outils systèmes (y compris curl qui fait partie du système de base) ne peuvent plus discuter avec des sites utilisant un certificat LetsEncrypt.

    L’expiration de ce certificat racine qui arrive pile au moment de la fin de prise en charge de macOS Mojave rend « la fin du support » super brutale. Quelques heures avant la fin du support, macOS ne parle déjà plus à la moitié d’Internet. ̄\_(ツ)_/ ̄


    Bref, si ça vous arrive, pour git vous téléchargez par exemple un certificat racine depuis cette page: https://letsencrypt.org/certificates/

    (cd ~ ; wget https://letsencrypt.org/certs/isrgrootx1.pem )

    Puis vous l’ajoutez dans votre fichier .gitconfig, par exemple:

    cat >> ~/.gitconfig <<EOF
    [http "https://gitlab.gnome.org"]
     sslCAInfo = ${HOME}/isrgrootx1.pem
     sslVerify = true
    EOF

    ce commentaire est sous licence cc by 4 et précédentes