Tweaks / Addons A.K.A. The Underground > Algemeen
Maak je eigen multi-domein SSL certificaat
Briolet:
(Edit: zie voor DSM 6.x ook verderop in dit draadje vanaf hier)
Sinds DSM 5.0 kun je in DSM je eigen self-signed certificaten maken zodat de meeste mensen niet met code in de weer hoeven voor de aanmaak. Wil je wat meer dan de standaardinstellingen, dan moet je toch zelf aan de slag. Hieronder volgt een handleiding hoe je zelf een self-signed certificaat maakt die meerdere domeinen gelijktijdig signeert. Dan kun je b.v. naast je 'domeinnaam.nl' ook subdomeinen in je certificaat opnemen, zoals www.domeinnaam.nl, *.domeinnaam.nl (wildcard voor alle subdomeinen), een compleet andere domeinnaam of het interne IP adres van je nas.
Configureer ssl verzoeken met 'SubjectAltName' via openssl
Met meervoudige domein certificaten kun je een groter aantal domeinen via één enkel certificaat beveiligen. SubjectAltName's zijn een X509 versie 3 (RFC 2459 punt 4.2.1.7) uitbreiding die het toestaat om in één ssl certificaat meerdere namen op te nemen die moeten matchen. SubjectAltName kan e-mail adressen, IP adressen, DNS hostnamen, nasnamen etc bevatten. SubjectAltName zal hier verder tot SAN afgekort worden.
Voorbereiding op de NAS
De nas wil het certificaat uiteindelijk van de PC importeren dus laten we het certificaat in de homefolder aanmaken. In deze home folder creëren we een map met de naam OpenSSL en plaatsen hierin de openssl.cnf file die in het attachment van deze message staat.
Nu loggen we in op de nas via de termimal/putty en zetten de current directory op de OpenSSL folder die net in de homefolder geplaatst is.
--- Code: ---cd /volume1/homes/<account>/OpenSSL
--- Einde van code ---
<account> is de naam van het account waarmee je in de homefolder inlogt.
Voorbereiding op de iMac
Als je een mac hebt, hoef je het certificaat niet op de nas aan te maken, maar kunt dat ook op je mac doen. Creëer dan de OpenSSL folder in je User folder en plaats de openssl.cnf file in deze folder. Je opent vervolgens het Terminal programma en typt in : 'cd OpenSSL' Hierna gaat alles weer gelijk aan de beschrijving voor de nas.
Genereren van de 'Certificaat Request' file
Voor een algemene SSL Certificaat Request (CSR), hoef je niet moeilijk te doen met openssl. Omdat we een paar SAN's aan ons CSR toe willen voegen moeten we een paar toevoegingen plegen aan de openssl conf file. En dan met name de x509 V3 extensie met de SAN's. Deze toevoeging is in bijgevoegde conf file al gebeurd, alleen moeten de domeinnamen etc. nog naar eigen behoefte aangepast worden.
Aanpassen van de openssl.cnf file
In de config file staan twee secties die naar behoefte aangepast moeten worden. (# Dat aanpassen doe je met een code-editor, zie opmerking op het einde) De eerste is de [req_distinguished_name] sectie:
--- Code: ---[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = NL
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Mijn Provincie
localityName = Locality Name (eg, city)
localityName_default = Mijn Plaats
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Mijn Firma b.v.
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = Mijn andere Firma b.v.
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default = Mijn afdeling
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = mijndomein.nl
commonName_max = 64
emailAddress = Email Address
emailAddress_default = info@mijndomein.nl
emailAddress_max = 64
--- Einde van code ---
Dit stuk hoef je niet perse aan te passen. Dit zijn de vragen die je gedurende de aanmaak krijgt en de default antwoorden. Als je echter de default antwoorden alvast naar eigen wens aanpast, hoef je later alleen maar een aantal keer <return> te geven op de vraag. Als je wilt dat er twee firmanamen in het certificaat staan, omdat je de nas voor meerdere firma's gebruikt, dan kun je het '#' teken wissen waarna je de optie van een tweede firmanaam krijgt. Je kunt zo ook een derde of vierde toevoegen door het tellertje op te hogen. Wil je ook nog een afdeling op het certificaat, dan moet je ook daar de '#' weghalen.
Het tweede deel dat je moet aanpassen is de [alt_name] sectie:
--- Code: ---[ alt_name ]
DNS.1 = mijndomein.nl
DNS.2 = *.mijndomein.nl
DNS.3 = mijntweededomein.nl
DNS.4 = mijnderdedomein.nl
IP.1 = 10.0.1.10
IP.2 = 10.0.1.23
email.1 = pietje@mijndomein.nl
email.2 = pietje@mijntweededomein.nl
URI.1 = https://mijndomein.nl
--- Einde van code ---
Je kunt hier DSN, IP, email en URI namen toevoegen. Je kunt elke hoeveelheid toevoegen als het tellertje maar steeds correct opgehoogd wordt.
Merk op dat de domeinnaam die in de req_distinguished_name sectie staat, niet meer gebruikt wordt als je de alt_name gebruikt, dus je domeinnaam moet ook daar nog eens herhaald worden.
Met *.mijndomein.nl creëer je een wildcard die elke toevoeging voor je domein accepteert. Het 'kale' domein valt niet onder de wildcard en moet je dus ook nog vermelden.
Aanmaak van de privé sleutel
De privé sleutel maak je nu aan met:
--- Code: ---openssl genrsa -out private.key 2048
--- Einde van code ---
Hier is 2048 de sleutellengte. Je kunt ook 1024 of 4096 kiezen. Des te langer de sleutel, des te trager gaat het ver- en ontsleutelen, maar des te veiliger wordt hij. 2048 geldt echter als een veilige waarde terwijl de 1024 bit nu nog veilig is maar men verwacht dat dit in de nabije toekomst kraakbaar wordt. Veel software zal in de toekomst geen 1024 bit sleutels meer accepteren.
Aanmaak van de CRT file
De CRT file maak je met:
--- Code: ---openssl req -new -out public.crt -key private.key -config openssl.cnf
--- Einde van code ---
Je krijgt nu een aantal vragen die je in kunt vullen. Als je alleen een return geeft, wordt de default waarde uit de config file gebruikt. Alleen bij de vraag over een 'challenge password' vul je niets in, want dat wil je niet.
Zo, nu hebben we een mooi certificaat (CRT), maar het is nog niet getekend. Dit laten we echter niet door een CA doen, maar doen het zelf.
Zelf ondertekenen van het certificaat
Het ondertekenen doen we met:
--- Code: ---openssl x509 -req -sha256 -days 3650 -in public.crt -signkey private.key -out public.crt -extensions v3_req -extfile openssl.cnf
--- Einde van code ---
'-sha256' is het gebruikte handtekenings algoritme. Je kunt hier ook het minder veilige '-sha1' gebruiken voor compatibiliteit met oude software.
'-days 3650' is de geldigheids duur in dagen. Nu is het 10 jaar.
Installeren op de nas
Copieer de 'public.crt' en 'private.key' file die net in de OpenSSL folder gecreëerd zijn, naar je PC. Vervolgens log je in op DSM, ga naar de Certificaat tab onder beveiliging en kies "Certificaat importeren'. Nu vul de eerste twee velden voor 'persoonlijke sleutel (=private.key) en Certificaat (=public.crt) in. Een intermediate certificaat gebruiken we niet. Als je nu OK kiest zal DSM het certificaat installeren.
# Als je code met een tekstverwerker aanpast komen er onzichtbare tekens in die de boel doen vastlopen. Je moet dus een echte code editor gebruiken. Voor Windows is dat b.v. 'Notepad++' Dus geen Notepad, want die verminkt de boel indien verkeerd ingesteld. Voor de Mac is dat TekstEdit (in de mode 'platte tekst') of TextWrangler.
Als je op de mac trema's gebruikt in de tekst van de config file, kan het gebeuren dat ze verminkt in het certificaat komen. Mocht je hier tegen aan lopen, save de file dan expliciet in het utf-8 formaat met Textwrangler.
Tim__:
Top! Thx m8 :-)
Briolet:
Ik hoop dat het zo opgeschreven is dat ales duidelijk is. Het blijft een technisch verhaal en staat daarom toch in 'tweaks' en niet in 'algemeen'. Laat weten of er iets fout in staat, dan zal ik dit in het originele bericht verduidelijken.
De default configuratie file van openssl staat in: /etc/ssl/openssl.cnf. Maar toch gebruikt OpenSSL deze niet. Volgens de website van openssl.com is dat een vaker voorkomend probleem en zij noemen het een bug als het zo 'gebroken' geïnstalleerd is. Maar dat geeft hier niet omdat we toch een eigen openssl.cnf file gebruiken.
Briolet:
Ik had de SubjectAltName alleen met Safari, chrome en Apple Mail getest. (Alles de Mac versie) Die ondersteunden het allen perfect, na één keer importeren en toestaan werkt het direct voor alle andere hosts. Sterker, omdat hij in de sleutelhanger komt en Safari, Chrome en mail die sleutelhanger ondersteunen, hoef je maar eenmalig het ceriticaat te accepteren en hij is dan ook direct geldig in de andere programma's.
Firefox blijkt deze SubjectAltName niet te ondersteunen. Voor elk domein krijg ik de certificaatvraag opnieuw en moet het certificaat expliciet toestaan. Ze worden dan bij de certificaten onder het kopje 'servers' opgeslagen. Hij staat er onder het hoofd domein met de urls die je zelf als geldig hebt gespecificeerd. Eigenlijk zoals vroeger met één dus hij kijkt niet naar het SubjectAltName veld. Valt me tegen van deze browser.
Dan vraag ik me nu af hoe dat met de Windows versie van Chrome is en met IE en Outlook
Mij viel wel op de het Synology.me certificaat bij Firefox ook onder het kopje 'Servers' staat, maar dat mijn vorige certificaat onder het kopje 'Authorities' vermeld was.
Briolet:
Ik ben vanochtend nog even met Firefox in de weer geweest. Het is (gelukkig) niet mijn standaard browser. Het certificaat beheer is toch een beetje ellende. Als ik de site via een andere poort benader, moet ik weer een exceptie toevoegen. Op de certificaat pagina zie je onder je certificaat alle excepties staan met de gebruikte url en poort.
Ik dacht slim te zijn en het certificaat te importeren via de 'import' button. Nu staat dit geïmporteerde certificaat ook onder de exceptions met een *. Echter, nu werkt niets meer. De reeds bestaande excepties werken nog, maar nieuwe kun je niet meer toevoegen.
Ik heb een keer alles gewist, cache geleegd en afgesloten. Nieuw opstarten en certificaat importeren. Als ik nu naar de site ga krijg ik toch een certificaatfout, maar ik mag geen exception toevoegen. Wis ik de exception met een *, dan werkt alles weer.
Ik heb hetzelfde gedaan met de website van een kennis die een synology.me certificaat gebruikt. Ik heb daar ooit een exception voor gemaakt in firefox. Voor de aardigheid heb ik zijn certificaat eens via de 'import' button toegevoegd. Hij komt nu ook met een * onder exceptions te staan, maar ik kan zijn site nu niet meer benaderen. Ik blijf hangen in de certificaatfout zonder mogelijkheid een verdere exception toe te voegen. Delete ik de exception met een * weer, dan werkt alles als vanouds.
Mijn conclusie: het certificaatdeel van Firefox is bagger. Als je een certificaat importeert werkt het niet. Beter niet importeren en elke keer een exception toevoegen. :!:
------
Ik heb voor de compleetheid ook nog eens de Opera browser geprobeerd. Dat werkte in één keer voor alle domeinnamen, zonder iets te hoeven configureren. Maar Opera gebruikt op de mac ook de systeem-sleutelhanger om wachtwoorden en certificaten te valideren. (Net als Safari en Chrome).
Navigatie
[0] Berichtenindex
[#] Volgende pagina
Naar de volledige versie