(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 opensslMet 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 NASDe 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.
cd /volume1/homes/<account>/OpenSSL
<account> is de naam van het account waarmee je in de homefolder inlogt.
Voorbereiding op de iMacAls 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' fileVoor 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 fileIn 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:
[ 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
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:
[ 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
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é sleutelDe privé sleutel maak je nu aan met:
openssl genrsa -out private.key 2048
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 fileDe CRT file maak je met:
openssl req -new -out public.crt -key private.key -config openssl.cnf
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 certificaatHet ondertekenen doen we met:
openssl x509 -req -sha256 -days 3650 -in public.crt -signkey private.key -out public.crt -extensions v3_req -extfile openssl.cnf
'-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 nasCopieer 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.