Totalni automatizace je sice zajimava vec, ale vlastni utilita ma podle me nekolik potencialnich rizik, i pres otevrenost zdrojoveho kodu:
- co kdyz bude schvalne generovat slabe klice
- pripadne samotny klic zatim neznamym zpusobem odesle ven
- diky pravum roota nebo minimalne pravum na konfiguraci webserveru se z letsencrypt na hromade serveru stane botnet s pomerne silnym potencialem ke zneuziti
Prvni dva body se teoreticky daji ignorovat, pokud budeme uvazovat nasazeni na domenach, kde doted zadne SSL nebylo. I kdyby nekdo ziskal klic, bezpecnost oproti stavu pred nasazenim Letsencrypt neutrpi. Ale urcite se najde dost serveru, kde diky nabidce certifikatu zdarma dojde k nasazeni Letsencrypt i tam, kde by z hlediska bezpecnosti byl lepsi komercni certifikat.
Nerikam, ze ty situace musi nastat, ale byl bych klidnejsi, kdyby utilita sla pouzit manualne, pouze pro ziskani certifikatu pomoci CSR vygenerovaneho nekde jinde.
Co jiného než právě kompletní open-source může sloužit jako záchytná síť před podobnými problémy? Velkou výhodou zde je, že to dokonce ani není binárka, ale skript v pythonu, takže je celkem snadné zkontrolovat, že se shoduje s oficiální verzí.
Takhle například vypadá generování klíče:
def make_key(bits):
"""Generate PEM encoded RSA key.
:param int bits: Number of bits, at least 1024.
:returns: new RSA key in PEM form with specified number of bits
:rtype: str
"""
assert bits >= 1024 # XXX
key = OpenSSL.crypto.PKey()
key.generate_key(OpenSSL.crypto.TYPE_RSA, bits)
return OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key)
Žádná magie, prostě volání OpenSSL funkcí.