Asiakirjojen ilmainen digitaalinen allekirjoittaminen Linuxissa – mahdotonta?
Ensijulkaisu 1. joulukuuta 2019 • Viimeksi muokattu 27. syyskuuta 2026 • 4 min lukuaika • 820 sanaa
PÄIVITYS: Ubuntu 26:een päivittämisen jälkeen PDF Studio Pro 2024 ei enää pysty allekirjoittamaan asiakirjoja ”väärin käytetyllä” Letsencrypt-varmenteella, mikä johtuu todennäköisesti uusien Java-versioiden tiukemmista turvallisuusvaatimuksista. Näkyviin tulee virheilmoitus, jossa lukee:
JCE Provider ei tue SHA-hajautusalgoritmia
Heti kun keksin, miten tämän voi korjata, päivitän tämän viestin uudelleen. Valmistajan tuki on melko clueless siitä, mitä on meneillään. Minulla on tunne, että heidän sähköpostinsa kirjoittaa nykyään tekoäly eikä oikeat ihmiset.
Jos internetin tietoja on uskominen, asiakirjojen allekirjoittaminen on sisäänrakennettu LibreOfficeen. En ole vieläkään löytänyt ketään, joka olisi onnistunut allekirjoittamaan LibreOffice-asiakirjan digitaalisesti. Tämä kokemus osoittaa, että Edward Snowdenista huolimatta useimmat ihmiset eivät välitä aktiivisesti turvallisuudesta ja yksityisyydestä. Debian poisti scdaemonin gnupg2-paketista, ja kuten tavallista, tämän korjaaminen vaatii komentorivin ninjan taitoja. Scdaemon tarjoaa älykorttituen (jota minulla ei ole, mutta ilman scdaemonia Kleopatra-avainhallinta kieltäytyy toimimasta). Käytän Ubuntu 18.04:n oletusasennusta, ja asiakirjan allekirjoittaminen oli melkoinen seikkailu. Itse asiassa minulla ei vieläkään ole tyydyttävää tapaa tehdä tätä. Miten sen sitten tekeekin, jokin ei ole kohdallaan. Ubuntu 19.10 on korjannut ainakin avainhallinnan käynnistämisen LibreOfficesta, ja voin käynnistää SeaHorsen asiakirjan allekirjoitusvalintaikkunasta, mutta minulla ei vieläkään ole aavistustakaan, miten saisin GPG-avaimeni näkyviin LibreOfficessa. Onko kukaan selvittänyt tätä? Kunnes joku näyttää minulle, miten allekirjoitetaan LibreOfficella, käytän erittäin hyvää, mutta suljetun koodin ohjelmistoa PDFStudio GPG-avainten tuomiseen ja PDF-tiedostojen allekirjoittamiseen.
Allekirjoituspalvelut (DocuSign, HelloSign)
Mitä siis teet, jos sinun täytyy allekirjoittaa esimerkiksi PDF-tiedosto, mutta sinulla ei ole keinoja tai et halua tilata jotakin asiakirjojen allekirjoitukseen tarkoitettua varmennepalvelua, kuten DocuSign ? Jopa DocuSignin edullisimmalla paketilla yksi digitaalinen allekirjoitus maksaa 2 dollaria. DocuSign tarjoaa 30 päivän ilmaisen kokeilujakson, mutta en tiedä, pysyvätkö kokeilujakson aikana luomasi varmenteet voimassa kokeilujakson päättymisen jälkeen. Nykyisin DropBoxin omistamalla HelloSignilla on myös ilmainen taso (jolla voi allekirjoittaa 3 asiakirjaa kuukaudessa), ja allekirjoituksen yhteydessä se upottaa näkymättömän allekirjoituksen (joka oli jostain oudosta syystä kelpaamaton, kun testasin sitä, vaikka HelloSign onkin Adoben hyväksyttyjen luotettavien palveluntarjoajien listalla).
Itse allekirjoitetut, CAcert ja StartSSL
Teknisesti voit luoda omia allekirjoituksia (itse allekirjoitettuja varmenteita), mutta jos tällaisia PDF-tiedostoja katsellaan Acrobat Readerilla, allekirjoitus merkitään virheelliseksi/kelpaamattomaksi ja itseallekirjoittaminen on merkitty epäluotettavaksi. Aikaisemmin oli olemassa CAcert -sertifikaatteja, mutta tietääkseni kaikki selaimet ovat poistaneet CAcert-sertifikaatit, ja sama pätee todennäköisesti myös Acrobat Readeriin. Myös StartSSL jakoi aiemmin ilmaisia sertifikaatteja, mutta niitä ei enää ole (niiden oma turvallisuus oli vakavasti kyseenalainen).
PDF-katseluohjelmien tuki
Mielenkiintoista on, että monet PDF-katseluohjelmat jättävät allekirjoituksen joka tapauksessa huomiotta (esim. Firefoxin sisäänrakennettu PDF-katseluohjelma ei näytä mitään). Toiset PDF-katseluohjelmat näyttävät allekirjoituksen, mutta EIVÄT ilmoita, että sitä ei pidetä luotettavana (esim. Chrome-selaimen PDF-katseluohjelma ja Ubuntun oletuskatseluohjelma Evince). Koska et voi tietää, mitä katseluohjelmaa vastaanottaja käyttää allekirjoitetun PDF-tiedostosi näyttämiseen, olet joka tapauksessa hankalassa tilanteessa (vaikka tilaisitkin asiakirjojen allekirjoituspalvelun).
Letsencrypt Allekirjoituksen luotettavuuden lisäämiseksi voi käyttää Letsencrypt -varmennetta allekirjoittamiseen. Tämä allekirjoitus todistaa, että asiakirjan laatija hallinnoi tiettyä verkkosivustoa (minun tapauksessani https://jeltsch.org ). Se on enemmän kuin itse allekirjoitettu varmenne (ja jos verkkosivusto on luotettava, tämä on kiistatta myös enemmän kuin DocuSign-tilauksen ostaminen), mutta Adobe ei luota uudelleen käytettyyn Letsencrypt-varmenteeseen, koska Letsencrypt-hanke ei tietenkään ole koskaan ollut tarkoitettu asiakirjojen allekirjoittamiseen (“Allekirjoittajan identiteettiä ei tunneta, koska sitä ei ole lisätty luotettujen varmenteiden luetteloon eikä mikään sen vanhemmista varmenteista ole luotettu varmenne”). Tällaisen varmenteen enimmäisvoimassaoloaika on kuitenkin 3 kuukautta, minkä jälkeen se menettää voimassaolonsa. Sitä voidaan edelleen käyttää, mutta se näkyy kelpaamattomana, koska se on vanhentunut (tai ei ole vielä voimassa).
Kuinka käyttää Let’s Encrypt -varmennetta “väärin”
Ensinnäkin tarvitset verkkopalvelimen, joka käyttää Let’s Encrypt -varmenteita verkkosivuston identiteetin todentamiseen. Tämä ei kuulu tämän blogikirjoituksen aihepiiriin, mutta aiheesta löytyy useita hyviä oppaita (esim. Let’s Encryptin omilta sivuilta tai Digital Oceanilta ). Kun olet hankkinut Let’s Encrypt -varmenteesi, voit ”käyttää niitä väärin” asiakirjojen allekirjoittamiseen seuraavasti: Koska Let’s Encrypt vaatii varmenteen uusimista kolmen kuukauden välein, samaan hakemistoon kertyy paljon fullchain.pem- ja privkey.pem-tiedostoja, jotka on numeroitu. Haluat tietysti käyttää uusinta (ainoa voimassa oleva) varmennetta ja ehkä haluat uusia Let’s Encrypt -varmenteen välittömästi ennen sen viemistä asiakirjojen allekirjoittamista varten:
certbot --apache --force-renewal -n -d jeltsch.org
tai jos haluat uusia kaikki varmenteet:
certbot --apache --force-renewal
Jos päätät uusia kaikki varmenteet, certbot yrittää myöntää yhden varmenteen kaikille palvelimellasi oleville verkkotunnuksille (tätä mahdollisuutta ei ollut Let’s Encrypt -ekosysteemin alkuvaiheessa, mutta se otettiin käyttöön myöhemmin). Jos palvelimesi palvelee useampaa kuin yhtä verkkotunnusta, sinun on määritettävä manuaalisesti se verkkotunnus, jolle haluat varmenteen. Lisätietoja certbot-skriptin käytöstä löytyy osoitteesta https://certbot.eff.org/docs/using.html#certbot-commands . Tämä komento muuntaa varmenteet PKCS#12-tiedostoksi:
openssl pkcs12 -export -out signing_certificat.p12 -in /etc/letsencrypt/archive/website-name/fullchain1.pem -inkey /etc/letsencrypt/archive/website-name/privkey1.pem
PKCS#12-tiedosto tallentaa varmenteen ja yksityisen avaimen yhteen salattuun tiedostoon (tiedostotunniste .p12). Siksi komento pyytää sinulta salasanalauseen, joka sinun on ehdottomasti muistettava, jotta voit käyttää varmennetta. Sen jälkeen voit siirtää p12-tiedoston pöytätietokoneellesi ja käyttää sitä PDF-tiedostojen allekirjoittamiseen.
Aikaleimauspalvelimet
Jos PDF-sovelluksesi pyytää aikaleimauspalvelinta, voit käyttää jotakin ilmaispalveluista, kuten https://ca.signFiles.com/TSAServer.aspx tai https://doku.tid.dfn.de/de:dfnpki:zeitstempeldienst . Adobe Acrobat ei kuitenkaan luota myöskään näihin aikaleimauspalveluihin.
Varmenteiden itseallekirjoitus
Tässä ovat komennot itseallekirjoitetun varmenteen luomiseen (ohjelma pyytää (väliaikaista) salasanaa; keksi vain jotain ja muista se, tarvitset sitä toisessa vaiheessa):
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3650
Muuntaminen allekirjoitussertifikaatiksi (ohjelma pyytää ensin edellä mainittua väliaikaista salasanaa ja sitten lopullista salasanaa, jonka sinun on muistettava sertifikaatin käyttämiseksi:
openssl pkcs12 -export -out signing_certificat.p12 -in cert.pem -inkey key.pem