Aan het begin van de 21e eeuw was er een schaarste aan IPv4-adressen. Al in 2011 had IANA de laatste vijf resterende blokken /8 uit haar adresruimte toegewezen aan regionale internetregistrars, en in 2017 waren ook zij door hun adressen heen. De oplossing voor de catastrofale tekortkomingen aan IPv4-adressen was niet alleen de komst van het IPv6-protocol, maar ook de technologie SNI, waarmee een groot aantal websites op één IPv4-adres kon worden gehost. Het principe van SNI is dat deze uitbreiding het mogelijk maakt voor clients om tijdens de handshake de naam van de website die ze willen verbinden, aan de server te communiceren. Dit stelt de server in staat om meerdere certificaten op te slaan, en dus meerdere domeinen op één IP-adres te ondersteunen. Deze technologie is vooral populair geworden bij SaaS-aanbieders voor bedrijven, die nu praktisch een onbeperkt aantal domeinen kunnen hosten zonder zich zorgen te maken over het benodigde aantal IPv4-adressen. Laten we eens kijken hoe we SNI-ondersteuning in de Zimbra Collaboration Suite Open-Source Edition kunnen implementeren.

SNI werkt in alle actuele en ondersteunde versies van Zimbra OSE. Als u Zimbra Open-Source op een multi-serverinfrastructuur draait, moet u alle onderstaande stappen uitvoeren op de node met de geïnstalleerde Zimbra Proxy-server. Daarnaast heeft u overeenkomende paren certificaat+sleutel nodig, evenals vertrouwde certificaatketens van uw certificeringsautoriteit voor elk van de domeinen die u op uw IPv4-adres wilt hosten. Merk op dat de meeste fouten bij het configureren van SNI in Zimbra OSE juist voortkomen uit onjuiste certificaatbestanden. We raden daarom aan om alles goed te controleren voordat u ze daadwerkelijk installeert.
Allereerst, om SNI correct te laten werken, moet u de volgende opdracht invoeren zmprov mcf zimbraReverseProxySNIEnabled TRUE op de node met de Zimbra Proxy-server, en herstart vervolgens de Proxy-service met behulp van de opdracht zmproxyctl restart.
Laten we beginnen met het aanmaken van een domeinnaam. Als voorbeeld nemen we de domeinnaam company.ru en, nadat het domein is aangemaakt, bepalen we de naam van de virtuele host Zimbra en het virtuele IP-adres. We wijzen erop dat de naam van de virtuele host Zimbra moet overeenkomen met de naam die de gebruiker in de browser moet invoeren om toegang te krijgen tot het domein, en ook moet overeenkomen met de naam die in het certificaat is opgegeven. Laten we als voorbeeld de naam van de virtuele host Zimbra nemen mail.company.ru, en gebruiken we als virtueel IPv4-adres het adres 1.2.3.4.
Voer daarna eenvoudig de opdracht in zmprov md company.ru zimbraVirtualHostName mail.company.ru zimbraVirtualIPAddress 1.2.3.4, om de virtuele host Zimbra aan de virtuele het IP-adreste koppelen. We benadrukken dat als de server achter NAT of een firewall zit, er voor moet worden gezorgd dat alle verzoeken naar het domein precies naar het externe IP-adres gaan dat eraan is gekoppeld, en niet naar het adres in het lokale netwerk.
Nadat alles is gedaan, hoef je alleen nog maar de certificaten van het domein te controleren en voor te bereiden voor installatie, en deze vervolgens te installeren.
Als de uitgifte van het certificaat voor het domein correct is verlopen, moet je drie bestanden met certificaten hebben: twee daarvan zijn ketens van certificaten van jouw certificeringsinstantie, en één is het daadwerkelijke certificaat voor het domein. Daarnaast moet je een bestand hebben met de sleutel die je hebt gebruikt voor het verkrijgen van het certificaat. Maak een aparte map aan /tmp/company.ru en plaats daar alle bestaande bestanden met sleutels en certificaten. Het resultaat zou er ongeveer zo uit moeten zien:
ls /tmp/company.ru
company.ru.key
company.ru.crt
company.ru.root.crt
company.ru.intermediate.crtDaarna combineren we de ketens van certificaten in één bestand met behulp van de opdracht cat company.ru.root.crt company.ru.intermediate.crt >> company.ru_ca.crt en verifiëren we of alles in orde is met de certificaten door de opdracht /opt/zimbra/bin/zmcertmgr verifycrt comm /tmp/company.ru/company.ru.key /tmp/company.ru/company.ru.crt /tmp/company.ru/company.ru_ca.crt. Nadat de controle van de certificaten en de sleutel succesvol is voltooid, kunnen we beginnen met de installatie.
Om te beginnen met de installatie, combineren we eerst het domeincertificaat en de vertrouwde ketens van certificeringsinstanties in één bestand. Dit gebeurt ook met behulp van een opdracht van het type cat company.ru.crt company.ru_ca.crt >> company.ru.bundle. Daarna moet de opdracht worden uitgevoerd om alle certificaten en de sleutel in LDAP te schrijven: /opt/zimbra/libexec/zmdomaincertmgr savecrt company.ru company.ru.bundle company.ru.key, en installeer vervolgens de certificaten met behulp van de opdracht /opt/zimbra/libexec/zmdomaincertmgr deploycrts. Na het installeren van het certificaat en de sleutel van het domein company.ru zullen deze worden opgeslagen in de map /opt/zimbra/conf/domaincerts/company.ru.
Door deze stappen te herhalen met verschillende domeinnamen maar hetzelfde IP-adres, is het mogelijk om honderden domeinen op één IPv4-adres te hosten. Daarbij kunnen certificaten van verschillende uitgevende instanties zonder problemen worden gebruikt. De juistheid van alle uitgevoerde handelingen kan in elke browser worden gecontroleerd, waar voor elke virtuele hostnaam de eigen SSL-certificaat.
Voor vragen over Zextras Suite kunt u contact opnemen met de vertegenwoordiger van het bedrijf 'Zextras', Ekaterina Triandafiliadi, via e-mail katerina@zextras.com
Bron: habr.com
