اگر پیش از گواهینامه امنیتی (SSL یا TLS) را نصب کرده باشید، از سختی کار نصب و تمدید آن آگاهید. از طرف دیگر چند سالیست که از سوی گوگل تاکید بیشتری بر نصب این گواهینامه میشود. خبر خوب اینکه از حدود سه هفته قبل یک مرجع صدور گواهینامه دیجیتال بصورت عمومی سرویس گواهینامه امنیتی رایگان خود را ارائه نموده است که براحتی هر چه تمام (حداقل در برخی پلتفرمها) نصب میشود.
Let’s Encrypt توسط ISRG تامین میشود که سازمانهای بزرگی همچون بنیاد موزیلا، سیسکو و Akamai از آن حمایت میکنند. خبر بسیار خوب اینکه این سرویس برای دامنههای ir. نیز قابل نصب است.
همانطور که گفته شد نصب این گواهینامه بسیار آسان است.
در ادامه طریقه نصب letsencrypt را بر روی سرور centos 6 برای وبسرور apache2 با هم مرور خواهیم کرد.
با ssh به سرور خود متصل میشویم و دستورات زیر را برای نصب پیشنیازهای letsencrypt وارد میکنیم.
# Install Epel Repository yum install epel-release # Install IUS Repository rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm # Install Python 2.7 and Git yum --enablerepo=ius install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv -y
حالا باید از مخزن گیتهاب letsencrypt یک کلون بگیریم.
cd /opt git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
با اجرای فرمان زیر letsencrypt کلیه نیازمندیهای خود را بصورت خودکار نصب میکند.
./letsencrypt-auto
اگر خروجی زیر را مشاهده کردید یعنی میتوانید به سراغ مراحل بعدی دریافت گواهی ssl بروید.
Requesting root privileges to run letsencrypt... /root/.local/share/letsencrypt/bin/letsencrypt --help letsencrypt-auto [SUBCOMMAND] [options] [-d domain] [-d domain] ... The Let's Encrypt agent can obtain and install HTTPS/TLS/SSL certificates. By default, it will attempt to use a webserver both for obtaining and installing the cert. Major SUBCOMMANDS are: (default) run Obtain & install a cert in your current webserver certonly Obtain cert, but do not install it (aka "auth") install Install a previously obtained cert in a server renew Renew previously obtained certs that are near expiry revoke Revoke a previously obtained certificate rollback Rollback server configuration changes made during install config_changes Show changes made to server config during installation plugins Display information about installed plugins Choice of server plugins for obtaining and installing cert: --apache Use the Apache plugin for authentication & installation --standalone Run a standalone webserver for authentication (nginx support is experimental, buggy, and not installed by default) --webroot Place files in a server's webroot folder for authentication OR use different plugins to obtain (authenticate) the cert and then install it: --authenticator standalone --installer apache More detailed help: -h, --help [topic] print this message, or detailed help on a topic; the available topics are: all, automation, paths, security, testing, or any of the subcommands or plugins (certonly, install, nginx, apache, standalone, webroot, etc)
اگر در طی مرحله بالا به خطای زیر برخورد کردید سرویس وبسرور خود را خاموش کنید.
Command "/root/.local/share/letsencrypt/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-cAuqmP/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-rhCaoe-record/install-record.txt --single-version-externally-managed --compile --install-headers /root/.local/share/letsencrypt/include/site/python2.7/cryptography" failed with error code 1 in /tmp/pip-build-cAuqmP/cryptography
یا اگر به خطای زیر برخوردید
c/_cffi_backend.c:13:17: fatal error: ffi.h: No such file or directory #include <ffi.h> ^ compilation terminated.
دستور زیر را وارد کنید.
yum groupinstall -y development yum install gcc libffi-devel python-devel openssl-devel
خب برای نصب گواهی ssl بر روی دامنه مورد نظرتان از کد زیر استفاده کنید:
./letsencrypt-auto certonly --webroot -w /var/www/example -d example.ir -d www.example.ir
بعد از وارد کردن دستور بالا از شما یک ایمیل برای ارتباطهای احتمالی آینده میخواهد. اگر همه چیز با موفقیت انجام شود متن زیر را مشاهده خواهید کرد:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.ir/fullchain.pem. Your cert will expire on 2016-07-28. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - If you lose your account credentials, you can recover through e-mails sent to myemail@gmail.com. - Your account credentials have been saved in your Let's Encrypt configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Let's Encrypt so making regular backups of this folder is ideal. - If you like Let's Encrypt, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
خب حالا ما موفق شدیم که گواهی ssl خود را از letsencrypt دریافت کنیم. برای اینکه بتوانیم به https دسترسی داشته باشیم باید به فایل کانفیگ دامنه خود در وبسرور آپاچی برویم. و خطوط زیر را به آن اضافه کنیم:
<VirtualHost *:443> DocumentRoot /var/www/example ServerName example.ir ServerAlias www.example.ir ErrorLog logs/example.ir-error_log CustomLog logs/example.ir-access_log common SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.ir/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.ir/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.ir/chain.pem SSLProtocol ALL -SSLv2 -SSLv3 SSLCipherSuite HIGH:!aNULL:!MD5 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on </VirtualHost>
حالا برای اعمال تغییرات وبسرور آپاچی را مجددا راهاندازی میکنیم.
/etc/init.d/httpd restart
برای اینکه ببینید تنظیمات شما صحیح بوده یا نه دامنه خود را در سایت زیر چک کنید تا ببینید چه نمرهای به سایت شما میدهد:
https://www.ssllabs.com/ssltest/analyze.html?d=hive.ir
این گواهی برای ۹۰ روز معتبر است که بعد از اتمام این مدت باید گواهی را تمدید کنید. این عملیات با کد سادهای که توسط letsencrypt ارائه شده است قابل انجام است. ما یک کرون جاب برای خودکار کردن این تمدید ایجاد میکنیم تا نگران نامعتبر شدن گواهی خود نباشیم:
sudo crontab -e ۳۰ ۲ * * ۱ /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
اگر مشکلی بود بپرسین.
منابع:
مرسی از مطلب زیباتون . آیا میشه از این سرویس رو بر روی هاست های اشتراکی که از سی پنل استفاده می کنن نصب کرد ؟
سلام دوست بزرگوار.
خواهش میکنم.
بله میشه.لینک زیر آموزشی برای این کار ارائه کرده امیدوارم جواب بده براتون.
خودم فرصت نکردم تست کنم.
https://www.kosinix.com/install-lets-encrypt-certificate-on-shared-hosting/
لطفا برای cPanel داخل ایران هم یک آموزش دقیق فارسی بزارید و تست کنید ببینیم جواب میده روش کار کنیم …
ممنون میشم
ان شاءالله دوستان یا خود بنده مقاله ای برای این منظور منتشر خواهیم کرد.
ممنون میشیم اگه منتشر کنید و لینکش رو تو همین صفحه بذارید
https://www.siteground.com/tutorials/cpanel/lets-encrypt.htm
خیلییییی ممنون
واقعا مفید بود
سلام
برای وب سرور iis هم میشه توضیح بدین چه طور میشه استفاده کرد؟
سلام بزرگوار
لینک زیر یه آموزشی برای همین منظور ارائه داده امیدوارم کمکتون کنه.
http://weblog.west-wind.com/posts/2016/Feb/22/Using-Lets-Encrypt-with-IIS-on-Windows
تشکر، لطف کردید
خواهش میکنم بزرگوار.
اگر بی مشکل نصب کردید لطفا یک پیام تایید بگذارید که بدونیم آموزش موجود در لینک ارائه شده مناسب هست یا نه.
بله بدون مشکل نصب شد. من در لینک ارائه شده از حالت LetsEncrypt-Win-Simple استفاده کردم، خیلی ساده و راحت جواب داد. ممنون از لطفتون
ممنون از اینکه گفتید. خداروشکر. خواهش میکنم.
بسیار آموزش عالی بود . سپاسگزارم
خداروشکر. خواهش میکنم.
برای هاست های اشتراکی این امکان وجود داره ؟
سلام بزرگوار
بله بستگی به پنل هاستینگ هم داره.
امیدوارم لینک زیر کمکتون کنه:
https://www.kosinix.com/install-lets-encrypt-certificate-on-shared-hosting/
سلام و عرض ادب
متاسفانه من با SSL آشنایی زیادی ندارم.
آیا با استفاده از این روش که معرفی کردید میشه سرور برای ایجاد ربات تلگرام رو راه اندازی کرد؟ چون برای ربات تلگرام لازمه که سرور SSL داشته باشه
سلام بزرگوار
بله میتونید.
این گواهی ssl فرقی نداره با ssl های پولی نداره.
ظاهرا از https://www.cloudflare.com/ هم میتونید استفاده کنید.
سلام
لطفا برای cPanel برای دامنه ir یک آموزش دقیق فارسی بزارید
ممنونم
سلام بزرگوار
به صلاحدید سردبیر ان شاءالله نوشته خواهد شد.
سلام عزیز
خب حالا ما موفق شدیم که گواهی ssl خود را از letsencrypt دریافت کنیم. برای اینکه بتوانیم به https دسترسی داشته باشیم باید به فایل کانفیگ دامنه خود در وبسرور آپاچی برویم. و خطوط زیر را به آن اضافه کنیم:
تا اینجا
درست پیش رفت ولی دستورات برای اپاچی رو اعمال نمیشه
سلام بزرگوار
فایل کانفیگ آپاچی رو درست پیدا کردین؟
مسیر فایل را اعلام کنید بی زحمت.
سلام برادر بزرگوار
متاسفانه من عجله کردم و درست نوشته شما رو نخوندم ودستورات رو به ترتیب در ssh کپی پیس کردم
یعنی این خطوط رو هم
DocumentRoot /var/www/example
ServerName example.ir
ServerAlias http://www.example.ir
ErrorLog logs/example.ir-error_log
CustomLog logs/example.ir-access_log common
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.ir/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.ir/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.ir/chain.pem
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
وارد کردم و بعد فهمیدم که دیگه دیر شده بود
سلام بزرگوار
یعنی مشکل حل شد؟
البته certbot میتونه بطور خودکار همه ی این کارهارو انجام بده براتون
https://certbot.eff.org
سلام بزرگوار
ممنونم
خیلی خوبه
سلام همه خطاتون مشکل دارن
خیلی عالی بود ممنون
فقط به این هم اشاره میکردید ادرس نصب موقعی مثلا دایرکت ادمین نصبه فرق میکنه بعضی ها فقط میان کپی پیست میکنن فکر میکنن اتومات همه چی اوکی میشه حتی به تغییر اسم example هم فکر نمیکنن
به هر حال ممنون
سلام بزرگوار
الحمدلله
بله درست میفرمایین.
اگه وب سرور به جای اپاچی nginx باشه چه تفاوت هایی میکنه این روند؟
سلام بزرگوار
الان از طریق لینک https://certbot.eff.org/ میتونید برای انواع سیستم عامل ها و وبسرورها روند نصب رو مشاهده کنید.
رو سرور ویندوز هم میتونین نصب کنین
لزوما برای لینوکس نیست
بله بزرگوار درست می فرمایین
سلام خیلی ممنون از آموزش بسیار مفیدتون. من یه برنامه نویس مبتدی اندروید هستم میخواستم برای ارتباط با وب سرویس که با استفاده از کتاب خانه ی Retrofit نوشتم از طریق سرویس SSL یا همون پروتکل Https ارتباط برقرار کنم اما اصلا نمیدونم باید چی کار کنم و اصلا فرقش در ارتباط بر قرار کردن با پروتکل Http تو چیه؟(منظورم نحوه ی پیاده سازیشه)
سلام بزرگوار
خواهش میکنم
این لینک رو بخونید شاید کمکتون کنه:
http://stackoverflow.com/questions/30779533/how-to-make-https-request-with-ssl-certificate-in-retrofit
آقا من ی مشکلی ک دارم توی مرحله ./letsencrypt-auto certonly –webroot -w /var/www/example -d example.ir -d http://www.example.ir
بهم میزنه
/var/www/famprinting does not exist or is not a directory
سلام بزرگوار
از لینک زیر استفاده کنید برای نصب گواهی.
https://certbot.eff.org/
وقتی به این روش نصب شد چجوری پاک کنیم؟
سلام بزرگوار
پاک کردن یعنی اینکه شما تمدید خودکار رو غیر فعال کنید ( فایل کرون رو غیر فعال کنید اگر فعال کردین) و پورت ۴۴۳ رو ببندید.
ظاهرا تنظمات apache رو تغییر داده و سایت غیر قابل دسترسه حتی با نصب دوباره apache هم درست نشد…
کاری با تنظیمات آپاچی نداره، خودتون حتما تغییری دادین در تنظیمات آپاچی
سلام
نصب بر روی ویندوز رو هم بزارید
منظورم iis هست
سلام بزرگوار
به کامنت زیر توجه کنید:
https://startups.ir/ssl-%d8%b1%d8%a7%db%8c%da%af%d8%a7%d9%86-lets-encrypt/#comment-2448
سلام و ممنون از مطلب مفیدتون
جسارتاً این اس اس ال تمدید ماهانه میخواد یا سالیانه؟ از دوستان میگفتند سه ماه یک بار باید تمدید بشه
سلام بزرگوار
هر سه ماه یک بار بصورت خودکار تمدید میشه
با اسکریپتی که در کرون جاب باید بذارین و در آموزش فوق توضیح داده شده
لطفا بفرمایید برای هاست اشتراکی با پنل دایرکت ادمین
روشی وجود دارد که بصورت خودکار تمدید کند؟
سلام بزرگوار
خود دایرکت ادمین برای این کار پلاگینی داره
اگر با دایرکت ادمین فعال کرده باشین تمدید خودکار هم فعال باید شده باشه
ممنونم از پاسختون
ولی من دسترسی به سرور ندارم و صرفا روی هاست اشتراکی خودم ssl را فعال کردم
حالا این پلاگینی که میگید کجاست؟ و چطوری باید فعال کرد؟
سلام ببخشید یک سوال
اینکه با اینکار ای پی خود سرور برای Ssl استفاده میشه؟ و برای دامنه ای پی جدا نیاز نیست؟
سلام بزرگوار
نه نیازی نیست
از sni استفاده میشه برای ssl
https://en.wikipedia.org/wiki/Server_Name_Indication
سلام علی جان
بنده از هاست اشتراکی استفاده می کنم
همین اموزش برای این هاست ها جواب میده؟
برای اتصال به ssh میتونم از شلر مثلا الفا استفاده کنم ؟
ممنون از سایت خوبتان
سلام بزرگوار
در هاست اشتراکی باید ببینید قابلیت استفاده از letsencrypt فعال شده یا نه.
از ادمین سرور بپرسید.
نه توی هاست اشتراکی اینطوری نمیتونید فعالش کنید. باید توی virtual host تغییراتی بدین که در سطح دسترسی شما نیست.
ممنون که زود جواب میدید
راحت ترین راه برای گرفتن ssl رایگان برای هاست اشتراکی سراغ دارین
ممنون
خواهش میکنم بزرگوار
در هاست اشتراکی همه چیز برمیگرده به پشتیبانی شرکت ارائهدهنده
باید به اونها تیکت بزنید و مطرح کنید.
هم cpanel و هم directadmin این قابلیت رو دارن اگر مدیر سرور فعالشون کنه
سلام نمیدونم برای من چرا این اررور رو میده
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you’re using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided
سلام
دی ان اس دامنه اتون درست ست نشده
یعنی دامنه روی سرور درست تنظیم نشده
سلام ممنون از پاسختون من باید از مدیر آی تی بخوام که بازبینی کنه ؟ ا
فقط این لینک که فرمودید باز نمیشه https://certbot.eff.org
لینک دیگه ای ندارین معرفی نمایید؟
من رو سرور nginx نصب کردم و مراحل بالا رو انجام دادم و برای همین نمیدونم اکه اشتباه نصب کرده باشم راه برگشتی داره که دوباره مراحل نصب رو از اول برم چون پکیج های زیادی نصب شد با دستورای بالا فکر کنم
سلام خواهش میکنم. فیلتر هست اون لینک از سمت خودشون. نصبش شامل یک سری پکیج برای کار کردن درست letsencrypt هست