Code signing troubles

Door Blokker_1999 op zondag 29 juli 2018 11:33 - Reacties (7)
Categorie: /var, Views: 2.957

!!! Klein beetje ergernis van de afgelopen weken/jaren van mij afschrijven !!!

Sinds heel wat jaren sta ik voor 1 van mijn hobby projecten in voor het digitaal ondertekenen van de code en installers die we creŽeren. Doordat we bijna dagelijks builds maken hebben we dit werk dan ook geautomatiseerd. Maar het verkrijgen van zo een certificaat en het gebruik ervan wordt met elke iteratie moeilijker en moeilijker.

Toen we hiermee begonnen hadden we via Tucows een certificaat van Comodo gekocht. Comodo is evenwel niet de eenvoudigste als het op verificatie aankomt van je identiteit. Niet alleen verwachten ze dat je een hoop documenten opstuurt, ze willen ook nog eens dat je langs de notaris passeert om deze te laten wettigen. Die man trok nogal een ogen, zoiets had hij nog nooit meegemaakt.

Toen het certificaat na 2 jaar verviel hebben we dan ook even rondgekeken en kwamen we bij Globalsign uit. Voor een gelijkaardig bedrag kregen we een eenvoudigere verificatieprocedure en bijkomend ook nog eens ondersteuning in het Nederlands ipv uit India. Dit is enkele jaren goed gegaan totdat Globalsign besloot om geen code signing certificaten meer te verkopen aan particulieren.

Terug naar Comodo dus, en terug langs de notaris. De eerste keer geen probleem, maar toen het certificaat verviel na 2 jaar ben ik tegen een muur aangelopen. Opnieuw heel de papierwinkel in orde gemaakt, netjes betaald maar ik heb nooit mijn certificaat gekregen. En ook mijn geld heb ik nooit teruggezien. Heel dat probleem heeft ons uiteindelijk meer dan een maand gekost voordat ik doorhad: dit komt niet meer goed. Snel een nieuwe aanbieder gezocht en ditmaal bij Thawte uitgekomen. Eenvoudige procedure (net zoals bij Globalsign), snel doorlopen en we waren weer vertrokken.

Recent naderde dan het einde van dat certificaat en ga je dus weer op zoek naar een nieuw aanbod. Blijkt dat ook Thawte gestopt is met het verkopen van code signing certificaten aan particulieren en als je wat verder kijkt dan vind je dat zo goed als alle aanbieders ermee gestopt zijn. Comodo bleek even de enige die er nog was totdat we bij Certum uitkwamen.

Maar niet alleen zijn de meeste CAs gestopt met de verkoop aan particulieren, het blijkt vandaag ook standaard te zijn om het certificaat om een smartcard te zetten in plaats van een puur softwarematig cert te gebruiken. Dus konden we ook nog eens gaan investeren in een hardware token. Nadat ik het token in ontvangst had genomen moesten we nog wat hordes overwinnen. Het tekenen gebeurd in een virtuele machine die vandaag op Hyper-V staat gevirtualiseerd. Het token heeft een USB aansluiting. Je ziet hem al komen, Hyper-V doet geen USB passthrough. Dit heb ik gelukkig kunnen oplossen met een freeware tooltje van VirtualHere. De gratis versie staat maar 1 USB apparaat toe, maar dat is alles wat ik nodig heb.

Dan heb je je kaartlezer in je VM, software en drivers geÔnstalleerd en dan blijft de software maar melden dat er geen kaartlezer beschikbaar is. Om gek van te worden. Daar ik eerst denk dat het aan de USB passthrough haal ik een oude PC van onder het stof, installeer er snel een Win10 op en merk dat ik daar hetzelfde probleem heb. Het duurt een tijd voor ik de klik maak maar opeens heb ik het.

RDP, verdomde RDP schakelt de smartcards uit op de PCs waarmee je verbinding maakt om dan je eigen smartcards door te geven aan die PC. Microsoft noemt dit een veiligheidsmaatregel. Ik kan er enkele andere, minder leuke namen voor bedenken. Maar het zij zo. Ik installeer snel VNC om mijn theorie te testen. Ik sluit de RDP connectie, start de VNC connectie en kijk, de kaartlezer is gevonden.

Maar nog mag ik niet rusten. Want het nieuwe hardware token heeft 1 groot nadeel ten opzichte van een softwarematige private sleutel. Telkens als ik het certificaat wil gebruiken om te tekenen, moet ik een PIN code ingeven. Begrijp me niet verkeerd. Ik begrijp waarom men hardware tokens is gaan gebruiken. Deze kan je niet zomaar stelen. Maar het maakt het er voor dit type van gebruik niet eenvoudiger op. Gelukkig kwam ik al heel snel een oplossing tegen op het grote internet waarbij men dit probleem had opgelost met AutoHotkey. Deze kan netjes voor je de PIN code ingeven telkens het venstertje naar boven komt.


code:
1
2
3
4
5
6
7
8
9
10
  Loop
  {   
    Sleep 2000
    if (WinExist("Windows Security"))
    {   
      WinActivate ; use the window found above
      SendInput 1234
      SendInput {Enter}
    }   
  }



En zo kunnen we weer 2 jaar verder. Benieuwd welke barriŤre ze in 2020 voor mijn voeten gaan gooien.