هاست مجازی : روش ایجاد چند گواهینامهssl بر روی یک آدرس آی پی با Nginx بر روی سرور مجازی اوبونتو
شما می توانید گواهینامه های ssl متعدد بر روی یک آدرس IP در هاست مجازی با استفاده از شناسایی نام سرور (SNI) ایجاد کنید.
درباره SNI
اگر چه میزبانی چندین سایت بر روی یک سرور مجازی، یک چالش و مشکل با استفاده از هاست مجازی نیست ،فراهم کردن گواهینامه های ssl متعدد برای هر سایت به طور معمول نیازمند آدرس های آی پی جداگانه است .این رویه اخیرا از طریق استفاده از شناسایی نام سرور (SNI) که به بازدید کننده سایت گواهینامه ای ارسال می کند که با نام سرور درخواست شده مطابقت دارد، ساده شده است.
نکته :
SNI فقط می تواند برای دادن سرویس به سایت های SSL مختلف از وب سرور شما استفاده شود و به احتمال زیاد در بقیه بدافزارها کار نخواهد کرد،از قبیل میل سرورها و..همچنین درصد کمی از مرورگرهای وب قدیمی هستند که ممکن است خطاهای گواهینامه را بدهند. ویکی پدیا لیست آپدیت شده نرم افزاری را که این پسوند TLS را پشتیبانی می کنند یا نمی کنند را دارد.
راه اندازی
SNI برای سرویس دادن به گواهینامه ها نیاز به دامنه های ثبت شده دارد .
مراحل این مقاله به کاربر با سطح دسترسی روت نیاز دارد.اگر در این باره نیاز به کمک دارید می توانید در اینجا اطلاعات لازم و روش آن را پیدا کنید.
Nginx باید در سرور مجازی شما قبلا نصب و اجرا شده باشد.
اگر اینطور نیست، می توانید با این دستور آن را دانلود کنید.
sudo apt-get install nginx
می توانید اطمینان حاصل کنید که SNI بر روی سرور شما فعال است:
nginx -V
بعد از نمایش داده شدن ورژن Nginx، باید این خط را ببینید:
TLS SNI support enabled
گام اول- دایرکتوری های گواهینامه SSL خودتان را ایجاد کنید.
برای منظور این مقاله هر دو گواهینامه امضا شده هستند.ما برای ایجاد یک سرور که هر دو سایت example.com و example.org را میزبانی کند، کار خواهیم کرد.
گواهینامه SSL ،دو بخش عمده دارد:خود گواهینامه و کلید عمومی . برای دسترسی آسان به فایل های مربوط ،ما باید یک دایرکتوری برای هر گواهینامه SSL ایجاد کنیم.
mkdir -p /etc/nginx/ssl/example.com mkdir -p /etc/nginx/ssl/example.org
گام دوم – ایجاد کلید سرور و درخواست امضای گواهینامه
در ابتدا یک گواهینامه SSL برای example.com ایجاد کنید.
به دایرکتوری مناسب بروید:
cd /etc/nginx/ssl/example.com
با ایجاد کلید سرور مجازی آغاز کنید . در طول این عملیات، از شما خواسته خواهد شد یک عبارت مخصوص را وارد کنید. این عبارت را به دقت یادداشت کنید،اگر آن را فراموش یا گم کردید، قادر به دسترسی به گواهینامه نخواهید بود.
sudo openssl genrsa -des3 -out server.key 1024
مراحل را با ایجاد یک درخواست امضا گواهینامه ادامه دهید:
sudo openssl req -new -key server.key -out server.csr
این دستور خط فرمان را برای نمایش دادن لیست فیلدهایی که باید پر شود ،سریع تر خواهد کرد.
مهم ترین خط “”Common Name” است . نام دامنه رسمی تان را در اینجا وارد کنید، یا اگر هنوز دامنه ای ندارید آدرس آی پی سایتتان را وارد کنید.پسورد چالشی و نام کارخانه اختیاری را خالی بگذارید.
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:NYC Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc Organizational Unit Name (eg, section) []:Dept of Merriment Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:webmaster@awesomeinc.com
گام سوم – حذف عبارت عبور
ما تقریبا ایجاد گواهینامه را تمام کردیم. به هر حال،آن باید به ما امکان حذف عبارت عبور را بدهد .اگر چه داشتن عبارت عبور در جای خودش امنیت بیشتری فراهم می کند، مشکل از جایی آغاز می شود که کسی می خواهد Nginx را ریلود کند.در حالتی که Nginx کرش می کند یا به ریبوت نیاز دارد،شما همیشه نیاز به وارد کردن عبارت عبور دارید که وب سرورتان را به حالت آنلاین برگردانید.
این دستور را برای حذف پسورد به کار ببرید:
sudo cp server.key server.key.orgsudo openssl rsa -in server.key.org -out server.key
گام چهارم – گواهینامه SSL خودتان را امضا کنید.
گواهینامه شما تمام شده و فقط باید آن را امضا کنید.
به خاطر داشته باشید که می توانید با تغییر عدد ۳۶۵ به مقدار دلخواهتان تعیین کنید گواهینامه چقدر باید در دسترس باقی بماند. در حالت پیش فرض گواهینامه بعد از یک سال منقضی می شود.
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
شما حالا ایجاد گواهینامه را برای سایت اولتان تمام کردید.
برای ایجاد دومین گواهینامه، به دایرکتوری دوم بروید.
cd /etc/nginx/ssl/example.org
سه گام قبلی را برای گواهینامه دوم تکرار کنید. هنگامیکه اینکار به پایان رسید می توانید اضافه کردن گواهینامه ها را به هاست مجازی (Virtual Hosts)آغاز کنید.
گام پنجم – ایجادVirtual Hosts
وقتی گواهینامه ها را ذخیره و آماده کردید ، می توانید اطلاعاتتان را در فایل Virtual Hosts وارد کنید .
اگر چه لازم نیست ما می توانیم دو فایل Virtual Hosts را برای ذخیره آن در فایل های جداگانه ایجاد کنیم .
sudo nano /etc/nginx/sites-available/example.com
هر فایل شامل پیکربندی هاست مجازی خواهد بود (اطمینان حاصل کنید server_name ، ssl_certificate و خط های ssl_certificate_key را برای منطبق بودن با نیازهایتان ویرایش کنید):
server { listen 443; server_name example.com; root /usr/share/nginx/www; index index.html index.htm; ssl on; ssl_certificate /etc/nginx/ssl/example.com/server.crt; ssl_certificate_key /etc/nginx/ssl/example.com/server.key; }
شما سپس می توانید پیکربندی مناسب را در فایل هاست مجازی دیگر قرار دهید:
sudo nano /etc/nginx/sites-available/example.org
server { listen 443; server_name example.org; root /usr/share/nginx/www; index index.html index.htm; ssl on; ssl_certificate /etc/nginx/ssl/example.org/server.crt; ssl_certificate_key /etc/nginx/ssl/example.org/server.key; }
گام ششم – فعال کردنVirtual Hosts
گام آخر فعال کردن هاست ها توسط ایجاد یک لینک نمادین مابین دایرکتوری sites-available و دایرکتوری sites-enabled است .
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/example.org
با برقراری تمام هاست های مجازی ، Nginx را ریستارت کنید:
sudo service nginx restart
شما اکنون باید قادر به دسترسی به هر دو سایت باشید، هر کدام با نام دامنه خودش و گواهینامه SSL.
شما می توانید هر دو سایت را با و بدون گواهینامه های SSL امضا شده فقط با تایپ خود دامنه ( example.com یا example.org) یا دامنه با پیشوند (https://example.com یا https://example.org ) مشاهده کنید.
ترجمه شده توسط : آرزو رنجبرپور