Namestitev različnih SSL certifikatov za virtualne hoste na Synology NAS
Recimo, da na Synology NASu gostimo nekaj virtualnih spletnih strežnikov z različnimi domenami (npr. www.domena1.com, www.domena2.com, itd.). Za te virtualne spletne strežnike želimo vzpostaviti šifrirane (https) povezave in to storimo z vklopitvijo SSL šifriranja ter namestitvijo ključa in certifikata na NAS.
Certifikat nastavimo (kreiramo ali uvozimo) v nadzorni plošči (Control panel) v appletu Security (DSM v5+), medtem ko virtualne spletne strežnike kreiramo v appletu Web Services. Takoj seveda opazimo, da je kreiranje virtualnih strežnikov omejeno na mapo, ime (npr. www.domena1.com) in port (vrata) na katerem se virtualni strežnik odziva. (Za https (šifrirane) povezave nastavimo port običajno na 443.)
Posledično vsi virtualni spletni strežniki uporabljajo isti certifikat (in ključ) kot osnovna spletna stran oz. cel NAS, ne glede na to, da običajno ne pripadajo isti domeni kot osnovni strežnik.
Ker je konfiguriranje virtualnih spletnih strežnikov preko GUI praktično nemogoče (razen kreiranja) bomo vso konfiguracijo za različne certifikate naredili preko ukazne vrstice. Zato se na NAS povežemo s SSH:
$ ssh root@nas_ip_address
in uredimo datoteko SSL virtualnih strežnikov:
$ vi /etc/httpd/sites-enabled-user/httpd-ssl-vhost.conf-user
V tej datoteki so vpisani vsi virtualni strežniki, ki smo jih vnesli preko GUI med oznakama <VirtualHost *:443> in </VirtualHost>, zato vse spremembe vpisujemo med ti oznaki, za tisti virtualni strežnik za katerega želimo drugačen certifikat. Nastavitev drugega certifikata (in ključa) zahteva zgolj dodajanje nekaj vrstic:
<VirtualHost *:443>
ServerName www.domena1.com
...
SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/domena1.crt
SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/domena1.key
SSLCertificateChainFile /usr/syno/etc/ssl/sub.class1.server.ca.pem
</VirtualHost>
Zadnja vrstica (SSLCertificateChainFile) je opcijska, kadar uporabljamo verificiran certifikat. Primer je dan za StartSSL vmesni certifikat.
Seveda moramo pred tem (ročno) kopirati ključ (npr. domena1.key) in certifikat (domena1.crt) ter opcijsko vmesni certifikat v mapo na NAS. To je načeloma lahko katera koli mapa, priporočam pa uporabo temu že namenjenih map na lokaciji /usr/syno/etc/ssl/. To naredimo z ukazom:
$ cp /volume1/secure/domena1.key /usr/syno/etc/ssl/ssl.key/domena1.key
$ cp /volume1/secure/domena1.crt /usr/syno/etc/ssl/ssl.crt/domena1.crt
Tu predvidevam, da ima NAS v skupni rabi mapo imenovano secure in smo vanjo prenesli ključe in certifikate.
Slabost te rešitve je v tem, da v primeru, ko moramo dodati ali odstraniti virtualni strežnik preko GUI, izgubimo vse nastavitve in jih moramo vnesti ponovno. Druga možnost pa je, da nikoli več ne uporabljamo GUI za dodajanje/odstranjevanje virtualnih strežnikov in namesto urejamo datoteki httpd-vhost.conf-user in httpd-ssl-vhost.conf-user neposredno.