گرفتن گواهینامه از Let's Encrypt برای دامنه در Zimbra

این مقاله برای قضیه Root certificate های جدید let's encrypt بروزرسانی شده است، از اکتبر 2021 باید از روش بروزرسانی استفاده نمایید.اطلاع دادند که کاربران فلان دامنه که روی زیمبرا هستند از روی سیستم های مک برای تنظیم mail client بدلیل گواهینامه غیرمعتبر مشکل دارند و برای mail.folan.tld از Let's Encrypt گواهینامه معتبر بگیرید و نصب کنید و ...کمی بدقلقی کرد اما در نهایت راه حل ساده اش را روی CentOS8 و زیمبرا 8.8.15 اینجا مرحله به مرحله شرح می دهم که خودم هم دفعه بعد به همین راهنما ارجاع کنم/دهم.زیمبرا یک Collaborative Suite یا Groupware است که امکانات کامل mail server و tasks و calendar و chat و Briefcase و File Share و web interface و ... دارد و به خیلی چیزهای دیگه مثل BigBlueButton هم وصل می شه و ... ، الان در دنیا خیلی مورد استقبال واقع شده و محبوب است.مقایسه زیمبرا و اکسچنج سرور مایکروسافتبرای انجام این کار باید certbot را نصب کنیم، راحت ترین راه نصب certbot روی centos8 استفاده از snapd است، بنابراین اول باید اون را نصب کنیم. مراحل کار بشرح ذیل است :1- نصب snapd2- نصب certbot3- گرفتن و ویرایش گواهینامه برای دامنه مدنظر4- نصب و verify و deploy گواهینامه روی زیمبرا و تست Automatic Renewalفرض بر این است که شما یک زیمبرا 8.8 استاندارد و معمولی نصب شده روی centos8 دارید.نکته : هرگز فراموش نکنید که پس از نصب زیمبرا پورت های 11211 TCPوUDP مربوط به memcached را روی فایروال یک سطح بالاتر (ورودی فایروال شبکه دیتاسنتر مثلاً) ببندید که شر بدجور نشود.مرحله 1 : نصب snapd#yum -y install epel-release #yum install snapd #systemctl enable --now snapd #ln -s /var/lib/snapd/snap /snap #snap install core; sudo snap refresh coreمرحله 2 : نصب certbot#snap install --classic certbot #ln -s /snap/bin/certbot /usr/bin/certbotمرحله 3 : گرفتن و ویرایش گواهینامه برای دامنه مدنظر#certbot certonlyبروزرسانی 2013 : در نسخه 8.8.15 زیمبرا فقط RSA پشتیبانی می شود بنابراین از دستور ذیل برای certbot استفاده بفرمایید.#certbot certonly --key-type rsa --force-renewalتصحیح گواهینامه ها با همان روش ذیل *** بروزرسانی *** در پایین انجام می شود.در اجرای این اسکریپت، ابتدا گزینه 1 را انتخاب کنید، بعد ایمیل بدهید ، سپس y بزنید سپس n بزنید و در نهایت لیست دامنه ها را بصورت جدا شده با , وارد نمایید.الان اگر به پوشه etc/letsencrypt/live/mail.folan.tld/ بروید 4 فایل cert.pem و chain.pem و fullchain.pem و privkey.pem که از پوشه etc/letsencrypt/archive/ لینک شده اند را می بینید./************* قدیمی است، بروزرسانی شده - روش جدید چند خط پایین تر *****************/* نکته کار اینجاست که در فایل chain.pem صادر شده توسط Let's Encrypt بخش root CA وجود ندارد و موقع verify خطا می دهد!بصورت دستی فایل etc/letsencrypt/archive/mail.folan.tld/chain1.pem/ را با vi یا nano باز کنید و محتوی این آدرس را ته آن کپی کنید : https://letsencrypt.org/certs/trustid-x3-root.pem.txtیعنی محتوی chain1.pem اینجوری می شه، تکه آخر سوم از آدرس بالا copt/paste شده است :/******************** بروزرسانی ********************/بجای trustid-x3-root.pem.txt از روش ذیل استفاده نمایید :#wget -O /tmp/ISRG-X1.pem https://letsencrypt.org/certs/isrgrootx1.pem #wget -O /tmp/R3.pem https://letsencrypt.org/certs/lets-encrypt-r3.pem #cat /tmp/R3.pem > /etc/letsencrypt/archive/mail.folan.tld/chain.pem #cat /tmp/ISRG-X1.pem >> /etc/letsencrypt/archive/mail.folan.tld/chain.pem/******************************************************************/مرحله 4 : نصب و verify و deploy گواهینامه روی زیمبرا#mkdir /opt/zimbra/ssl/letsencrypt #cp /etc/letsencrypt/live/mail.folan.tld/* /opt/zimbra/ssl/letsencrypt/ #chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/* #su zimbra $cd /opt/zimbra/ssl/letsencrypt/ $/opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pemباید آخرش OK بدهد.حالا :$cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key $/opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem $zmcontrol restartالان هم درصورت دسترسی از طریق اینترفیس وب و هم mail clientها، باید certificate معتبر let's encrypt داشته باشید و خطایی درمورد اعتبار گواهینامه نگیرید.برای Automatic Renewal، خود certbot وقتی نصب می شود این قضیه را تنظیم می کند، گواهینامه های Let's Encrypt سه ماهه هستند و بعد باید مجدداً بروزرسانی شوند.برای تست اینکه آیا گواهینامه خودکار بروزرسانی می شود یا خیر از دستور ذیل استفاده بفرمایید :#certbot renew --dry-runدرصورت عدم خطا پیامی مشابه تصویر ذیل می گیرد و در صورت وجود خطا توضیحات آن نمایش داده می شود.