SSL (مخفف Secure Sockets Layer) یک اتصال امن بین مرورگرهای اینترنت و وب‌سایت‌ها (یا وب‌سرور) فراهم می‌کند و به شما امکان می‌دهد داده‌های خصوصی را آنلاین و به‌صورت کاملاً ایمن منتقل نمایید. بدین منظور باید گواهی‌نامه SSL را در وب‌سرور، وب‌سایت، سرور ایمیل، سرور dns و ... نصب کنید.

 

در مواردی همچون پرداخت از طریق کارت‌های اعتباری، SSL اطلاعات حساس و مهم (از نظر ایمنی) را به‌صورت ایمن انتقال می‌دهد. به‌طور پیش‌فرض داده‌ها بین مرورگرها و سرورهای وب به‌صورت آشکار ارسال می‌شوند و این منجر به دستیابی اطلاعات توسط مهاجمان و هکرها می‌شود. درحالی‌که اگر از SSL استفاده شود، داده‌ها بین مرورگرها و سرورهای وب به‌صورت ایمن و با فرمت رمزگذاری شده بر اساس رمزگذاری مبتنی بر گواهی 128 بیتی، 512 بیتی و 1024 بیتی انتقال یافته و هیچ کس قادر به خواندن آن‌ها نخواهد بود.

ابزارهای بسیاری در زمینه ارائه مکانیزم امنیتی SSL در بازار وجود دارد. از جمله آن‌ها ابزارهای Verisign ،symantec ،geotrust ،Comodo ،thawte Comodo و RapidSSL هستند. در اینجا می‌خواهیم نحوه تولید و نصب گواهی خود امضا (معتبر) SSL را توسط ابزار  apache در محیط لینوکس توضیح دهیم.

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب آپاچی tomcat 8 بر روی centos 7

 

نصب و فعال سازی ماژول SSL

دقت کنید که قبل از فعال کردن ماژول SSL، حتماً باید LAMP Setup را نصب کرده باشید. برای نصب و فعال سازی ماژول‌های SSL می‌توانید از دستورات زیر استفاده کنید.

به طور پیش فرض ماژول mod_ssl در سیستم Ubuntu/Debian/LinuxMint نصب شده است و تنها باید با اجرای دستور زیر آن را فعال نمایید.

$ sudo a2enmod ssl

در سیستم‌های CentOS/RHEL/Fedora، فقط ماژول mod_ssl را نصب کنید. پس از آن به صورت خودکار فعال خواهد شد.

# For RHEL/CentOS/Fedora 21 and older systems #
$ yum install mod_ssl openssl

# For Fedora 22 and later systems #
$ dnf install mod_ssl openssl

پس از فعال کردن ماژول SSL، باید وب‌سرور خود را مجدداً راه‌اندازی نمایید تا تغییرات اعمال شوند.

# For RHEL/CentOS/Fedora sysvinit systems #
$ sudo service httpd restart

# For RHEL/CentOS 7 & Fedora systems #
$ sudo systemctl restart httpd.service

# For Ubuntu/Debian/LinuxMint sysvinit systems #
$ sudo service apache2 restart

# For Ubuntu/Debian/LinuxMint systemd systems #
$ sudo systemctl restart apache2.service

 

ایجاد یک گواهی SSL معتبر

یک دایرکتوری ssl برای قرار دادن فایل‌های گواهی‌نامه در دایرکتوری Apache یا httpd ایجاد کنید.

# Create SSL directory Ubuntu/Debian/LinuxMint system #
$ sudo mkdir /etc/apache2/ssl

# Create SSL directory RHEL/Fedora/CentOS system #
$ sudo mkdir /etc/httpd/ssl

در سیستم‌های اوبونتو، دبیان و LinuxMint کلید و گواهی‌نامه را می‌توانید به‌صورت زیر ایجاد نمایید.

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
Generating a 2048 bit RSA private key
.......................................................................................+++
.............................................................................................................................................+++
writing new private key to '/etc/apache2/ssl/apache.key'
-----
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]:IN
State or Province Name (full name) [Some-State]:Tamil Nadu
Locality Name (eg, city) []:Chennai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:2daygeek
Organizational Unit Name (eg, section) []:Linux Geek
Common Name (e.g. server FQDN or YOUR name) []:2daygeek.com
Email Address []:admin@2daygeek.com

در سیستم‌های RHEL/Fedora/CentOS کلید و گواهی نامه را می‌توانید به‌صورت زیر تولید نمایید.

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt
Generating a 2048 bit RSA private key
.......................................................................................+++
.............................................................................................................................................+++
writing new private key to '/etc/httpd/ssl/apache.key'
-----
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]:IN
State or Province Name (full name) [Some-State]:Tamil Nadu
Locality Name (eg, city) []:Chennai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:2daygeek
Organizational Unit Name (eg, section) []:Linux Geek
Common Name (e.g. server FQDN or YOUR name) []:2daygeek.com
Email Address []:admin@2daygeek.com

 

پیکربندی Apache در جهت استفاده از SSL

تا اینجا گواهی‌نامه و کلید آماده است، اکنون زمان آن است که با قرار دادن فایل‌ها در دایرکتوری میزبان مجازی، تنظیمات Apache را در جهت استفاده از SSL تغییر دهید.

فایل default-ssl.conf را به‌صورت زیر در سیستم‌های Ubuntu/ Debian/ LinuxMint باز کرده و خطوط زیر را بر اساس موقعیت گواهی نامه خود اصلاح نمایید.

$ sudo nano /etc/apache2/sites-available/default-ssl.conf
ServerAdmin admin@example.com
ServerName your_domain.com
ServerAlias www.your_domain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

فایل ssl.conf را به‌صورت زیر در سیستم‌های RHEL/ Fedora/ CentOS باز کرده و خطوط زیر را بر اساس موقعیت گواهی نامه خود اصلاح نمایید.

$ sudo nano /etc/httpd/conf.d/ssl.conf
ServerAdmin admin@example.com
ServerName your_domain.com
ServerAlias www.your_domain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

میزبان مجازی SSL را برای سیستم‌های Ubuntu/ Debian/ LinuxMint به‌صورت زیر فعال کنید.

$ sudo a2ensite default-ssl.conf

پس از پیکربندی SSL، باید وب‌سرور خود را مجدداً راه‌اندازی کنید تا تغییرات اعمال شوند.

# For RHEL/CentOS/Fedora sysvinit systems #
$ sudo service httpd restart

# For RHEL/CentOS 7 & Fedora systems #
$ sudo systemctl restart httpd.service

# For Ubuntu/Debian/LinuxMint sysvinit systems #
$ sudo service apache2 restart

# For Ubuntu/Debian/LinuxMint systemd systems #
$ sudo systemctl restart apache2.service

 

ارزیابی نسخه SSL و TLS

برای بررسی نسخه SSL & TLS خود از دستورات زیر استفاده نمایید.

# Testing your SSL & TLS Version #
$ openssl s_client -connect localhost:443
CONNECTED(00000003)
depth=0 C = IN, ST = Tamil Nadu, L = Chennai, O = 2daygeek, OU = Linux Geek, CN = daygeek, emailAddress = admin@2daygeek.com
verify error:num=18:self signed certificate
verify return:1
depth=0 C = IN, ST = Tamil Nadu, L = Chennai, O = 2daygeek, OU = Linux Geek, CN = daygeek, emailAddress = admin@2daygeek.com
verify return:1
---
Certificate chain
 0 s:/C=IN/ST=Tamil Nadu/L=Chennai/O=2daygeek/OU=Linux Geek/CN=daygeek/emailAddress=admin@2daygeek.com
   i:/C=IN/ST=Tamil Nadu/L=Chennai/O=2daygeek/OU=Linux Geek/CN=daygeek/emailAddress=admin@2daygeek.com
---
Server certificate
-----BEGIN CERTIFICATE-----
MIID9zCCAt+gAwIBAgIJAOB4xC8Ph0gFMA0GCSqGSIb3DQEBCwUAMIGRMQswCQYD
.
.
/MSw9ojwo+NY3fpZff48/O3a8/pdVXkeoIZ7u9bsFmVh5souQNH0Q5lGGnQ1UTyL
4PUmPzk2PHb7pPw=
-----END CERTIFICATE-----
subject=/C=IN/ST=Tamil Nadu/L=Chennai/O=2daygeek/OU=Linux Geek/CN=daygeek/emailAddress=admin@2daygeek.com
issuer=/C=IN/ST=Tamil Nadu/L=Chennai/O=2daygeek/OU=Linux Geek/CN=daygeek/emailAddress=admin@2daygeek.com
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 1694 bytes and written 441 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 3C21A06CB9553B0A647DAB07346B3ED827D3C6A370A366A800C86C432C183CB6
    Session-ID-ctx: 
    Master-Key: 0D22759036E15AB05047544114243C2F70350867DDE3A85C968928AAB2B62EC4D2B959F4081341F49226BE15BBC9D585
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - d9 ad 1e 47 e8 60 04 5f-c2 5b a1 63 29 80 a1 b9   ...G.`._.[.c)...
    0010 - 0f e7 0c 91 0d 18 2e b1-2c 13 99 b4 10 0d 9a 23   ........,......#
    0020 - f0 a7 53 c1 82 1c 7c ed-6a 22 1b f4 b9 b9 db b4   ..S...|.j"......
    0030 - e1 ad 8a 0a 8f 19 32 83-59 f8 ce 5c dd 11 e1 f6   ......2.Y..\....
    0040 - e9 60 a0 bf 90 ee 9d 88-4b 12 33 d2 be b2 1c 52   .`......K.3....R
    0050 - df 1d 78 32 bd bf 4f 04-ba 75 57 9d e2 25 0f bf   ..x2..O..uW..%..
    0060 - cd 81 bb 50 82 79 12 86-72 0a 78 2c 6c eb 8d a3   ...P.y..r.x,l...
    0070 - be 37 4b 0f f0 0d 9b 75-50 95 c9 e0 8c 8d d0 65   .7K....uP......e
    0080 - 53 0f e4 d8 94 ea 56 27-90 4b ab eb 45 82 85 1c   S.....V'.K..E...
    0090 - 99 db 46 5c 9e 76 6e 82-4d 4b cc 46 7e 1e f2 48   ..F\.vn.MK.F~..H
    00a0 - b8 83 96 47 bc 94 1d fd-d3 51 de cf c1 5f 8e d3   ...G.....Q..._..

    Start Time: 1451100191
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
closed

 

ارزیابی راه‌اندازی

اکنون که SSL را با استفاده از Apache با موفقیت نصب، فعال و تنظیم نمودید، وقت آن است که با رفتن به یکی از آدرس‌های https://localhost/ یا https://your-server-ip- یا https://127.0.0.1 عملکرد آن را نیز بررسی نمایید.

 

چنانچه با مرورگر Firefox وارد شده‌اید، گزینه I Understand the Risks را باز کرده، گزینه Add Exception و سپس گزینه Confirm Security Exception را کلیک کنید.

اگر با مرورگر Chrome وارد شده‌اید، روی گزینه Proceed کلیک کنید.

 

 

منبع:

2daygeek