راه اندازی سرور openvpn روی لینوکس دبین

 گام پنجم- پیکربندی و ساخت صدور گواهی

OpenVPN از گواهینامه هایی برای رمزنگاری ترافیک استفاده می کند.
در این بخش،ما صدور گواهینامه خودمان (CA) را در دو مرحله ۱- نصب متغیرها و ۲- ایجاد CA راه اندازی خواهیم کرد.
OpenVPN از احراز هویت دو طرفه مبتنی بر گواهینامه ها پشتیبانی می کند،به این معنی که کلاینت باید گواهینامه سرور را تصدیق کند و سرور باید گواهینامه کلاینت را تصدیق کند ، قبل از اینکه اعتماد متقابل ایجاد شود .ما از اسکریپت Easy RSA برای انجام این کار استفاده خواهیم کرد.
در ابتدا از اسکریپت تولید Easy-RSAکپی کنید.

cp -r /usr/share/easy-rsa/ /etc/openvpn

سپس یک دایرکتوری ایجاد کنید تا کلید را در آن جا دهید.

mkdir /etc/openvpn/easy-rsa/keys

سپس ما پارامترهایی را برای گواهینامه هایمان تنظیم خواهیم کرد.فایل متغیرها را با استفاده از nano و یا ویرایشگر متن دلخواه خود باز کنید.

nano /etc/openvpn/easy-rsa/vars

متغیرهای زیر که داخل ” ” قرار دارند باید به متغیرهای دلخواه شما تغییر پیدا کنند.

/etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="US"
export KEY_PROVINCE="TX"
export KEY_CITY="Dallas"
export KEY_ORG="My Company Name"
export KEY_EMAIL="sammy@example.com"
export KEY_OU="MYOrganizationalUnit"

در فایل vars مشابه همچنین این یک خط نشان داده شده در زیر را ویرایش کنید.برای سادگی ، ما از server به عنوان نام کلید استفاده خواهیم کرد.اگر می خواهید از نام متفاوتی استفاده کنید،شما همچنین نیاز خواهید داشت فایل های پیکربندی OpenVPN را که به server.key و server.crt ارجاع می دهند، آپدیت کنید.

در زیر،در فایل مشابه،ما گواهینامه صحیح را مشخص خواهیم کرد.به دنبال خط درست بعد از بلاک قبلی که ویرایش کردیم بگردید که به این صورت است:

/etc/openvpn/easy-rsa/vars
# X509 Subject Field
export KEY_NAME="server"

ذخیره کرده و خارج شوید.

سپس ،ما مقادیر Diffie-Helmanرا با استفاده از ابزار OpenSSL توکار که dhparam نامیده می شود ایجاد خواهیم کرد.این ممکن است چندین دقیقه طول بکشد.
پرچم –out مشخص می کند که مقادیر جدید در کجا ذخیره می شوند.

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

گواهینامه ما حالا ایجاد شده است و زمان ایجاد کلید است.

در ابتدا، ما به دایرکتوری easy-rsa سوئیچ خواهیم کرد.

cd /etc/openvpn/easy-rsa

حالا ما می توانیم راه اندازی خود CAرا با مقدار دهی اولیه زیر ساخت کلید عمومی (PKI) آغاز کنیم.

به dot (.) وspace در مقابل دستور ./vars توجه کنید.آن بر دایرکتوری کاری جاری (منبع)دلالت می کند.

. ./vars

اخطار زیر چاپ خواهد شد .نگران نباشید،از آنجا که دایرکتوری مشخص شده در اخطار خالی است.

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys.

سپس،ما تمام کلیدهای دیگری که ممکن است با نصب ما تداخل داشته باشد پاک خواهیم کرد.

./clean-all

سرانجام،ما CA را با استفاده از دستور OpenSSLخواهیم ساخت.این دستور شما را به سمت تایید متغیر “Distinguished Name” خواهد برد که قبلا فعال شده است. ENTERرا برای قبول متغیر فعلی فشار دهید.

./build-ca

برای عبور از هر اعلان ENTER را فشار دهید از آنجا که مقادیر آنها را در فایل متغیرها تنظیم کرده اید.

صدور گواهی اکنون نصب شده است.

گام ششم -ایجاد یک گواهینامه و کلید برای سرور

در این بخش، از مسیر /etc/openvpn/easy-rsa کلید خود را با نام سرور بسازید.این قبلا به عنوان KEY_NAME در فایل پیکربندی شما مشخص شده است.پیش فرض برای این مقاله server می باشد.

./build-key-server server

دوباره،خروجی تایید نام مشخص شده را خواهد خواست ، ENTERرا برای قبول مقادیر پیش فرض معین فشار دهید.این بار،دو اعلان اضافی وجود خواهد داشت.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

هر دو باید خالی باقی بمانند،بنابراین فقط ENTER را برای عبور از هر کدام فشار دهید.

دو سوال اضافی در پایان مستلزم جواب (y)هستند.

Sign the certificate? [y/n]
۱ out of 1 certificate requests certified, commit? [y/n]

سپس شما با این خروجی که نشان دهنده موفقیت آمیز بودن عملیات است روبه رو خواهید شد:

Output
Write out database with 1 new entries
Data Base Updated

 

گام هفتم-گواهینامه های سرور و کلیدها را انتقال دهید

اکنون گواهینامه و کلید را به /etc/openvpn کپی کنید،از آنجا که OpenVPN در این دایرکتوری به دنبال CA، گواهینامه و کلید سرور خواهد گشت.

cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

شما می توانید تایید کنید که کپی موفقیت آمیز بوده،با:

ls /etc/openvpn

شما باید گواهینامه و فایل های کلید سرور را ببینید.

در این مرحله، سرور OpenVPNآماده است.آن را Start کنید و status را چک کنید:

service openvpn start
service openvpn status

دستور status خروجی زیر را برخواهد گرداند:

Output
* openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled)
Active: active (exited) since Thu 2015-06-25 02:20:18 EDT; 9s ago
Process: 2505 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 2505 (code=exited, status=0/SUCCESS)

مهمتر از همه،از خروجی بالا،شما باید Active: active (exited) since… را به جای Active: inactive (dead) since…. پیدا کنید.

سرور OpenVPN شما اکنون قابل استفاده است،اگر پیام status شما بگوید که VPN در حال اجرا نیست در این صورت نگاهی به فایل /var/log/syslog بیندازید برای خطاهایی شبیه به :

Options error: --key fails with 'server.key': No such file or directory

آن خطاها نشان می دهند که server.key به /etc/openvpn به صورت صحیح کپی نشده است.فایل را دوباره کپی کرده و مجددا تلاش کنید.

گام هشتم-ایجاد گواهینامه ها و کلیدها برای کلاینت ها

تا حالا ما سرور OpenVPN را نصب و پیکربندی کرده ایم،صدور گواهی را انجام داده و گواهینامه و کلید خود سرور را ایجاد کرده ایم.در این گام،ما از CAسرور برای ایجاد گواهینامه ها و کلیدها برای هر کامپیوتر کلاینتی که به VPN متصل خواهد شد،استفاده خواهیم کرد.

ساخت کلید و گواهینامه

برای هر کلاینت در اتصال به VPN مطلوب است که کلید و گواهینامه مخصوص به خود را داشته باشد.این بهتر از این است که یک گواهینامه و کلید عمومی برای استفاده تمام کامپیوترهای کلاینت ایجاد کنید.
نکته:به صورت پیش فرض،OpenVPN به اتصالات هم زمان به سرور توسط کلاینت هایی که از گواهینامه و کلید یکسان استفاده می کنند، اجازه نمی دهد.( duplicate-cnرا در /etc/openvpn/server.conf ببینید.)
برای ایجاد احراز هویت جداگانه برای هر کامپیوتر که قصد اتصال آن به VPN را دارید،شما باید این مرحله را برای هر کامپیوتر تکمیل کنید،اما نام client1 را در زیر به چیز متفاوت مثل client2 و iphone2 تغییر دهید .با اعتبار جداگانه برای هر کامپیوتر،آنها می توانند در سرور بعدا اگر احتیاج باشد به صورت جداگانه غیرفعال شوند.مثال های باقی مانده در این مقاله از client1 به عنوان نام کامپیوتر مثال ما استفاده خواهند کرد.
همانطور که برای کلید سرور انجام دادیم، یکی برای مثال client1 می سازیم.شما هنوز باید توسط /etc/openvpn/easy-rsa کار بکنید.

./build-key client1

دوباره از شما خواسته خواهد شد متغیرهای نام مشخص شده را تغییر یا تایید کنید.و این دو مورد باید خالی گذاشته شد و توسط فشار دادن کلید ENTE مقادیر پیش فرض را قبول کنید.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

مثل قبل،این دو تایید در پایان عملیات ساخت ،مستلزم جواب (y) می باشند.

Sign the certificate? [y/n]
۱ out of 1 certificate requests certified, commit? [y/n]

شما سپس خروجی زیر را دریافت خواهید کرد، که نشان دهنده ساخت موفقیت آمیز کلید است.

Write out database with 1 new entries.
Data Base Updated

سپس،کلید ایجاد شده را به دایرکتوری Easy-RSA keysکه قبلا ایجاد کرده ایم کپی خواهیم کرد.توجه داشته باشید که ما .conf را به .ovpn تغییر دادیم.این برای مطابقت با قرارداد است.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn

شما می توانید این بخش را برای هر کامپیوتر تکرار کنید با جاگذاری client1 با نام کلاینت مناسب.

نکته: توجه داشته باشید که نام client.ovpn تکراری ، نیازی نیست که ربطی به کامپیوتر کلاینت داشته باشد.نرم افزار OpenVPNسمت کلاینت ، از نام فایل به عنوان مشخص کننده برای اتصال VPN استفاده خواهد کرد.در عوض،شما باید client.ovpn را تکرار کنید به هر چیزی که می خواهید نام VPN در سیستم عامل شما باشد.برای مثال : work.ovpn به عنوان work, school.ovpn ، school و غیره مشخص خواهد شد.

ما نیاز داریم که هر فایل کلاینت را اصلاح کنیم تا شامل آدرس آی پی سرور OpenVPN باشد تا آن بداند که به چه باید متصل شود. client.ovpn را با استفاده از nano یا ویرایشگر متن دلخواه خود باز کنید.

nano /etc/openvpn/easy-rsa/keys/client.ovpn

در ابتدا،خطی را که با remote شروع می شود ویرایش کنید. my-server-1را به your_server_ip تغییر دهید.

/etc/openvpn/easy-rsa/keys/client.ovpn
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194

سپس،ناحیه ای را که در زیر نشان داده شده را پیدا کنید وuser nobody و group nogroup را از حالت کامنت خارج کنید،همانطور که ما در server.conf در گام ۱ انجام دادیم.توجه : این برای ویندوزها به کار برده نمی شود، بنابراین می توانید از آن رد شوید.وقتی انجام شد باید شبیه زیر باشد:

/etc/openvpn/easy-rsa/keys/client.ovpn
# Downgrade privileges after initialization (non-Windows only)
user nobody
group no group

انتقال گواهینامه ها و کلیدها به کامپیوترهای کلاینت

از مراحل بالا به یاد بیاورید که ما گواهینامه ها و کلیدهای کلاینت را ایجاد کردیم،و اینکه آنها در سرور OpenVPN در دایرکتوری /etc/openvpn/easy-rsa/keys ذخیره شده اند.
برای هر کلاینت، ما باید گواهینامه،کلید و فایل های قالب پروفایل کلاینت را به یک پوشه در کامپیوتر محلی مان یا کامپیوتر کلاینت دیگر انتقال دهیم.
در این مثال، کامپیوتر client1 ما به کلید و گواهینامه خودش احتیاج دارد.که در سرور در اینجا قرار دارد:

/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn/easy-rsa/keys/client1.key

فایل های ca.crt و client.ovpn برای همه کلاینت ها مشابه هستند.این دو فایل را هم دانلود کنید.توجه داشته باشید که فایل ca.crt در دایرکتوری متفاوتی از بقیه قرار دارد.

/etc/openvpn/easy-rsa/keys/client.ovpn
/etc/openvpn/ca.crt

در حالیکه نرم افزارهای دقیقی که برای انجام انتقال استفاده شده بستگی به انتخاب شما و سیستم عامل های کاربران دارد.شما نرم افزاری می خواهید که از SFTP(پروتکل انتقال فایل SSH) یا SCP(کپی امن) استفاده کند.این ،فایل های احراز هویت VPNکلاینت شما را در طول اتصال رمز نگاری شده انتقال خواهد داد.

در اینجا یک دستور SCP مثال آورده شده که از مثال client1 ما استفاده می کند.آن ، فایل client1.key را داخل دایرکتوری Downloads بر روی کامپیوتر محلی قرار می دهد.

scp root@your-server-ip:/etc/openvpn/easy-rsa/keys/client1.key Downloads/

در این جا چندین ابزار و مقاله برای انتقال امن فایل ها از سرور به یک کامپیوتر محلی آورده شده است:

WinSCP
How To Use SFTP to Securely Transfer Files with a Remote Server
How To Use Filezilla to Transfer and Manage Files Securely on your VPS

در پایان این بخش،اطمینان حاصل کنید که این چهار فایل را در کامپیوتر محلی خود دارید:

`client1.crt`
`client1.key`
client.ovpn
ca.crt

گام نهم-ایجاد یک پروفایل OpenVPN متحد برای کامپیوترهای کلاینت

چندین روش مختلف برای مدیریت فایل های کلاینت وجود دارد اما آسان ترین آن از یک مشخصات واحد استفاده می کند.این با اصلاح فایل قالب client.ovpn برای شامل شدن گواهی سرور ، و گواهی کلاینت و کلید آن است.هنگامی که با هم ادغام شدند،فقط مشخصات client.ovpnباید به نرم افزار OpenVPN کلاینت وارد شود.

ناحیه ای که در زیر مشخص شده است سه خط نشان داده شده باید به حالت کامنت دربیایند، سپس ما می توانیم گواهینامه و کلید را مستفیم در فایل client.ovpn وارد کنیم.وقتی که انجام شد باید شبیه زیر باشد:

/etc/openvpn/easy-rsa/keys/client.ovpn
# SSL/TLS parms.
# . . .
;ca ca.crt
;cert client.crt
;key client.key

تغییرات را ذخیره کرده و خارج شوید.ما گواهینامه ها را توسط کد اضافه خواهیم کرد.

در ابتدا صدور گواهی را اضافه کنید.

echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn

سپس گواهینامه را اضافه کنید.

echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn

در آخر کلید را اضافه کنید.

echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/easy-rsa/keys/client1.key >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn

ما می دانیم که یک مشخصات کلاینت واحد داریم.با استفاده از scp،شما می توانید فایل client.ovpn را به سیستم دوم خودتان کپی کنید.

گام دهم- نصب مشخصات کلاینت

سیستم عامل های مختلفی نرم افزارهای کاربر پسند بیشتری برای اتصال به سرور OpenVPN دارند.برای دستورالعمل های مشخص سیستم عامل ، گام ۵ این مقاله را مطالعه نمایید.

نتیجه گیری

تبریک! شما اکنون یک سرور OpenVPN در حال کار و فایل کلاینت دارید.
از کلاینت OpenVPN خودتان، می توانید اتصال را با استفاده از گوگل که آی پی عمومی شما را می گوید تست کنید.بر روی کلاینت، آن را لود کنید یکبارقبل و یکبار بعد از اینکه اتصال OpenVPN را آغاز کنید.آدرس آی پی باید تغییر کند.

 

منبع

برگردان:آرزو رنجبرپور

راه اندازی سرور openvpnروی لینوکس(بخش اول)

لینک کوتاه مقاله :