از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Apache را با Let’s Encrypt روشن کنید CentOS 7
سرفصلهای مطلب
Let’s Encrypt یک مرجع گواهی رایگان، خودکار و باز است که توسط گروه تحقیقاتی امنیت اینترنت (ISRG) توسعه یافته است. گواهینامه های صادر شده توسط Let’s Encrypt به مدت 90 روز از تاریخ صدور معتبر هستند و امروزه مورد اعتماد همه مرورگرهای اصلی هستند.
در این آموزش، ما مراحل لازم برای نصب یک گواهینامه رایگان Let’s Encrypt SSL را در a پوشش خواهیم داد CentOS 7 سروری که آپاچی را به عنوان وب سرور اجرا می کند. ما از ابزار certbot برای دریافت و تمدید گواهینامه های Let’s Encrypt استفاده خواهیم کرد.
پیش نیازها
قبل از ادامه این آموزش مطمئن شوید که پیش نیازهای زیر را برآورده کرده اید:
- نام دامنه ای داشته باشید که به IP سرور عمومی شما اشاره دارد. استفاده خواهیم کرد
example.com
. - آپاچی بر روی سرور شما نصب و اجرا می شود.
- آپاچی مجازی داشته باشید host
برای دامنه شما - پورت های 80 و 443 در فایروال شما باز هستند.
بسته های زیر را که برای سرور وب رمزگذاری شده SSL مورد نیاز است نصب کنید:
yum install mod_ssl openssl
Certbot را نصب کنید
Certbot ابزاری است که کار را ساده می کند process برای دریافت گواهینامه های SSL از Let’s Encrypt و فعال کردن خودکار HTTPS در سرور شما.
بسته certbot برای نصب از EPEL قابل دریافت است. اگر مخزن EPEL روی سیستم شما نصب نیست، می توانید با استفاده از دستور زیر آن را نصب کنید:
sudo yum install epel-release
پس از فعال شدن مخزن EPEL، بسته certbot را با تایپ کردن:
sudo yum install certbot
گروه Strong Dh (Diffie-Hellman) را ایجاد کنید
تبادل کلید دیفی-هلمن (DH) روشی برای تبادل امن کلیدهای رمزنگاری از طریق یک کانال ارتباطی ناامن است. مجموعه جدیدی از پارامترهای 2048 بیتی DH را برای تقویت امنیت ایجاد کنید:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
دریافت گواهینامه Let’s Encrypt SSL
برای دریافت گواهی SSL برای دامنه خود، از افزونه Webroot استفاده می کنیم که با ایجاد یک فایل موقت برای اعتبارسنجی دامنه درخواستی در ${webroot-path}/.well-known/acme-challenge
فهرست راهنما. سرور Let’s Encrypt درخواست های HTTP را به فایل موقت می دهد تا تأیید کند که دامنه درخواستی به سروری که ربات در آن اجرا می شود حل می شود.
برای سادهتر کردن آن، میخواهیم تمام درخواستهای HTTP را برای آنها ترسیم کنیم .well-known/acme-challenge
به یک دایرکتوری واحد، /var/lib/letsencrypt
.
دستورات زیر را برای ایجاد دایرکتوری و قابل نوشتن برای سرور آپاچی اجرا کنید:
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
برای جلوگیری از تکرار کد، دو قطعه پیکربندی زیر را ایجاد کنید:
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options SAMEORIGIN
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
قطعه بالا شامل تراشههای پیشنهادی است، OCSP Stapling، HTTP Strict Transport Security (HSTS) را فعال میکند و تعداد کمی هدر HTTP متمرکز بر امنیت را اعمال میکند.
برای اعمال تغییرات، پیکربندی آپاچی را دوباره بارگیری کنید:
sudo systemctl reload httpd
اکنون میتوانیم ابزار Certbot را با افزونه webroot اجرا کنیم و فایلهای گواهی SSL را با تایپ کردن به دست آوریم:
sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
اگر گواهی SSL با موفقیت دریافت شود، certbot پیام زیر را چاپ می کند:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-12-07. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
CentOS 7 با آپاچی نسخه 2.4.6 عرضه می شود که شامل آن نمی شود SSLOpenSSLConfCmd
بخشنامه این دستورالعمل فقط در آپاچی 2.4.8 بعداً موجود است و برای پیکربندی پارامترهای OpenSSL مانند تبادل کلید Diffie–Hellman (DH) استفاده میشود.
ما باید یک فایل ترکیبی جدید با استفاده از گواهینامه Let’s Encrypt SSL و فایل DH تولید شده ایجاد کنیم. برای انجام این کار، تایپ کنید:
cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem
اکنون که همه چیز تنظیم شده است، دامنه مجازی خود را ویرایش کنید host پیکربندی به شرح زیر است:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
</If>
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
# Other Apache Configuration
</VirtualHost>
با پیکربندی بالا، HTTPS را مجبور می کنیم و از www به نسخه غیرwww هدایت می کنیم. به راحتی می توانید پیکربندی را مطابق با نیاز خود تنظیم کنید.
برای اعمال تغییرات، سرویس Apache را مجددا راه اندازی کنید:
sudo systemctl restart httpd
اکنون می توانید وب سایت خود را با استفاده از آن باز کنید https://
و شما متوجه یک نماد قفل سبز خواهید شد.
اگر دامنه خود را با استفاده از تست سرور SSL Labs
، همانطور که در زیر نشان داده شده است نمره A+ دریافت خواهید کرد:
تمدید خودکار گواهینامه Let’s Encrypt SSL
گواهینامه های Let’s Encrypt به مدت 90 روز معتبر هستند. برای تمدید خودکار گواهیها قبل از انقضا، ما یک cronjob ایجاد میکنیم که دو بار در روز اجرا میشود و به طور خودکار هر گواهی را 30 روز قبل از انقضا تمدید میکند.
را اجرا کنید crontab
دستور ایجاد یک cronjob جدید که گواهی را تمدید می کند، یک فایل ترکیبی جدید شامل کلید DH ایجاد می کند و apache را مجددا راه اندازی می کند:
sudo crontab -e
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload httpd"
ذخیره کنید و فایل را ببندید.
برای تست تمدید process، می توانید از دستور certbot به دنبال آن استفاده کنید --dry-run
تعویض:
sudo certbot renew --dry-run
اگر خطایی وجود نداشته باشد، به این معنی است که تمدید process موفقیت آمیز بود.
نتیجه
در این آموزش، شما از certbot مشتری Let’s Encrypt برای دانلود گواهینامه های SSL برای دامنه خود استفاده کردید. شما همچنین قطعه های آپاچی را برای جلوگیری از تکرار کد ایجاد کرده اید و آپاچی را برای استفاده از گواهی ها پیکربندی کرده اید. در پایان آموزش، شما یک cronjob برای تمدید خودکار گواهی راه اندازی کرده اید.
اگر می خواهید در مورد روش استفاده از Certbot اطلاعات بیشتری کسب کنید، مستندات آنها
نقطه شروع خوبی است
اگر سوال یا بازخوردی دارید، در کامنت بگذارید.
این پست بخشی از LAMP Stack را روشن نصب کنید CentOS 7 سلسله.
سایر پست های این مجموعه:
روش نصب آپاچی روی CentOS 7
MySQL را نصب کنید CentOS 7
روش راه اندازی هاست مجازی آپاچی CentOS 7
Apache را با Let’s Encrypt روشن کنید CentOS 7
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-27 13:42:03