Thứ tư, 17/07/2013 | 00:00 GMT+7

Cách thiết lập Apache với Chứng chỉ SSL đã ký miễn phí trên VPS


Lưu ý: Bạn có thể cần xem xét sử dụng Let's Encrypt thay vì quy trình StartSSL.com bên dưới. Let's Encrypt là tổ chức phát hành certificate mới cung cấp cách tạo certificate SSL / TLS miễn phídễ dàng được tin cậy trong hầu hết các trình duyệt web. Xem hướng dẫn để bắt đầu: Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 14.04

Yêu cầu

Trước khi ta bắt đầu, đây là các công cụ web bạn cần cho hướng dẫn này:

  1. Trình duyệt Google Chrome
  2. Apache được cài đặt trên VPS của bạn ( server cloud )
  3. Tên domain bạn sở hữu
  4. Quyền truy cập vào một địa chỉ email tại domain đó:
    1. postmaster@dasty.co
    2. hostmaster@dasty.co
    3. webmaster@dasty.co

StartSSL.com cung cấp các certificate SSL đã được xác minh hoàn toàn miễn phí ( user của bạn sẽ không phải nhìn thấy những màn hình đỏ đáng sợ nói rằng "trang web này không tin cậy " nữa)) certificate SSL mà bạn có thể sử dụng trên trang web của bạn . Đây là một thỏa thuận tuyệt vời vì hầu hết các công ty tính phí $ 50- $ 60 cho các dịch vụ tương tự. Phiên bản miễn phí hơi phức tạp để cài đặt , nhưng nó rất xứng đáng.

Để bắt đầu, hãy duyệt đến StartSSL.com và sử dụng thanh công cụ ở bên trái, chuyển đến Sản phẩm StartSSL và sau đó đến StartSSL ™ Miễn phí. Chọn liên kết cho Control panel từ đầu trang.

Đảm bảo rằng bạn đang sử dụng Google Chrome

  1. Chọn Đăng ký Nhanh. Lựa chọn
  2. Nhập thông tin cá nhân của bạn và nhấp vào tiếp tục.
  3. Bạn sẽ sớm nhận được một email có mã xác minh bên trong nó. Copy paste email đó vào biểu mẫu trên trang của StartSSL.
  4. Họ sẽ xem xét yêu cầu của bạn cho một certificate và sau đó gửi cho bạn một email với thông tin mới. Tuy nhiên, quá trình này có thể mất đến 6 giờ, vì vậy hãy kiên nhẫn.
  5. Khi email đến, hãy sử dụng liên kết được cung cấp và mã xác thực mới (ở cuối email) để tiếp tục bước tiếp theo.
  6. Họ sẽ yêu cầu bạn Tạo private key và bạn sẽ được cung cấp lựa chọn cấp độ "Cao" hoặc "Trung bình". Tiếp tục và chọn "Cao".
  7. Khi khóa của bạn đã sẵn sàng, hãy nhấp vào Cài đặt.
  8. Chrome sẽ hiển thị cửa sổ bật xuống thông báo rằng certificate đã được cài đặt thành công vào Chrome.

Điều này nghĩa là trình duyệt của bạn hiện đã được xác thực với certificate mới của bạn và bạn có thể đăng nhập vào các khu vực xác thực StartSSL bằng certificate mới của bạn . Bây giờ, ta cần cài đặt một certificate được định dạng đúng để sử dụng trên VPS của bạn. Nhấp lại vào liên kết Control panel và chọn tùy chọn Xác thực. Chrome sẽ hiển thị cửa sổ bật lên hỏi bạn có muốn xác thực hay không và sẽ hiển thị certificate bạn vừa cài đặt. Hãy tiếp tục và xác thực bằng certificate đó để vào console .

Bạn cần xác thực domain của bạn để chứng minh rằng bạn sở hữu domain mà bạn đang cài đặt certificate . Nhấp vào Trình hướng dẫn xác thực trong Control panel và đặt Loại thành Xác thực domain . Bạn sẽ được yêu cầu chọn từ một email tại domain của bạn , chẳng hạn như postmaster@yourdomain.com.

StartSSL

Kiểm tra hộp thư đến của email để biết địa chỉ email bạn đã chọn. Bạn sẽ nhận được một email xác minh khác tại địa chỉ đó, vì vậy, giống như trước đây, hãy copy paste mã xác minh vào trang web StartSSL.

Tiếp theo, chuyển đến tab Trình hướng dẫn certificate và chọn tạo Chứng chỉ SSL / TLS của Server Web.

Bắt đầu SSL

Nhấn tiếp tục và sau đó nhập password an toàn, giữ nguyên các cài đặt khác.

Bạn sẽ thấy một hộp văn bản có chứa private key của bạn. Copy paste nội dung vào editor và lưu dữ liệu vào file có tên ssl.key.

Khóa cá nhân

Khi bạn nhấp vào tiếp tục, bạn sẽ được hỏi bạn muốn tạo certificate cho domain nào:

Chọn domain

Chọn domain của bạn và tiến hành bước tiếp theo.

Bạn sẽ được hỏi bạn muốn tạo certificate cho domain phụ nào. Trong hầu hết các trường hợp, bạn muốn chọn www tại đây, nhưng nếu bạn muốn sử dụng domain phụ khác với SSL, thì hãy nhập domain đó tại đây

Thêm domain  phụ

StartSSL sẽ cung cấp cho bạn certificate mới của bạn trong một hộp văn bản, giống như nó đã làm cho private key :

Lưu certificate

, sao chép và paste vào một editor , lần này lưu nó dưới dạng ssl.crt.

Tuy nhiên, bạn cũng cần StartCom Root CA và CA Server Trung gian Lớp 1 của StartSSL để xác thực trang web , vì vậy ở bước cuối cùng, hãy chuyển đến ngăn Hộp công cụ và chọn Chứng chỉ StartCom CA:

Startcome CA Certs

Tại màn hình này, nhấp chuột phải và Lưu dưới dạng hai file :

  • StartCom Root CA (Mã hóa PEM) (lưu vào ca.pem)
  • Server trung gian Lớp 1 CA (lưu vào sub.class1.server.ca.pem)

Vì lý do bảo mật, StartSSL mã hóa private key của bạn (tệp ssl.key), nhưng web server của bạn cần version không được mã hóa của nó để xử lý mã hóa trang web .Để giải mã nó, hãy sao chép nó vào server của bạn và sử dụng lệnh sau để giải mã nó vào file private.key:

openssl rsa -in ssl.key -out private.key

OpenSSL sẽ hỏi bạn password của bạn, vì vậy hãy nhập password đó vào password bạn đã nhập trên trang web của StartSSL.

Đến đây, bạn sẽ có năm file . Nếu bạn thiếu bất kỳ bước nào, hãy kiểm tra kỹ các bước trước đó và download lại:

  • ca.pem - Chứng chỉ root của StartSSL
  • private.key - Phiên bản không được mã hóa của private key của bạn (hãy cẩn thận không ai khác có quyền truy cập vào file này!)
  • sub.class1.server.ca.pem - Chứng chỉ trung gian cho StartSSL
  • ssl.key - Phiên bản mã hóa của private key của bạn (không cần sao chép vào server )
  • ssl.crt - Chứng chỉ mới của bạn

Bạn có thể hủy file ssl.key. Nếu bạn chưa sao chép những cái khác vào server của bạn , bạn tải chúng lên đó ngay bây giờ:

scp {ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} YOURSERVER:~ 

Kích hoạt certificate trong Apache

Có một certificate sẽ không tốt nếu bạn thực sự không thể sử dụng nó. Phần này giải thích cách cấu hình Apache để sử dụng certificate SSL mới của bạn. Các hướng dẫn này dành cho Apache chạy trên các version Ubuntu VPS gần đây. Đối với các bản phân phối hoặc web server dựa trên Linux khác, bạn sẽ phải điều chỉnh cho phù hợp.

Đầu tiên, tạo các folder nơi ta sẽ lưu trữ các khóa. Bật module SSL của Apache và khởi động lại Apache.

sudo a2enmod ssl
sudo service apache2 restart
sudo mkdir -p /etc/apache2/ssl

Sao chép các file bạn đã cài đặt ở phần trước vào folder / etc / apache2 / ssl trên VPS của bạn.

sudo mkdir -p /etc/apache2/ssl
cp ~/{ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} /etc/apache2/ssl

Hành hình:

ls /etc/apache2/ssl

Và nó sẽ trả về:

ca.pem
ssl.crt
private.key
sub.class1.server.ca.pem

Bây giờ, hãy mở file cấu hình apache2 của bạn. Trừ khi bạn đã sửa đổi cấu hình mặc định, hãy nhập:

nano /etc/apache2/sites-enabled/000-default

Nó trông giống như sau :

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Sao chép toàn bộ tập lệnh ở trên (từ <VirtualHost *: 80> sang </VirtualHost>), paste vào bên dưới tập lệnh hiện có và thay đổi dòng trên cùng từ:

<VirtualHost *:80>

đến

<VirtualHost *:443>

Và thêm các dòng sau vào sau dòng <VirtualHost *: 443>:

SSLEngine on                                                                
SSLProtocol all -SSLv2                                                      
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM                

SSLCertificateFile /etc/apache2/ssl/ssl.crt                           
SSLCertificateKeyFile /etc/apache2/ssl/private.key                        
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem 

Kết quả cuối cùng sẽ như thế này:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

<VirtualHost *:443>
    SSLEngine on                                                                
    SSLProtocol all -SSLv2                                                      
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM                

    SSLCertificateFile /etc/apache2/ssl/ssl.crt                           
    SSLCertificateKeyFile /etc/apache2/ssl/private.key                        
    SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem 
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Lưu file của bạn và khởi động lại Apache bằng:

sudo service apache2 restart

Bạn có thể kiểm tra file log của Apache để xem có bất kỳ lỗi dừng hiển thị nào với lệnh này không:

cat /var/log/apache2/error.log

Nếu mọi thứ đều ổn, hãy thử truy cập trang web trong trình duyệt web bằng URL HTTPS (ví dụ: https : //www.YOURSITE.com). Khi trang web tải, bạn sẽ thấy một biểu tượng ổ khóa nhỏ màu xanh lá cây bên cạnh URL. Nhấp vào nó và bạn sẽ thấy những điều sau đây. Tab kết nối sẽ cho thấy danh tính của trang web đã được StartCom xác minh.

Xin chúc mừng! Bạn đã sẵn sàng!

Liên kết tham khảo:

Đây là một số bài viết khác mà tôi đã tham khảo khi gộp cái này lại với nhau. Nếu bạn gặp bất kỳ vấn đề nào, chúng có thể là nguồn cảm hứng về cách khắc phục chúng:

Đệ trình bởi: Nik van der Ploeg

Tags:

Các tin trước

Cách bắt đầu với mod_pagespeed với Apache trên Ubuntu và Debian Cloud Server 2013-07-09
Cách bắt đầu với mod_pagespeed với Apache trên server cloud CentOS và Fedora 2013-07-09
Cách tạo chứng chỉ SSL trên Apache trên Arch Linux 2012-11-09
Cách cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Fedora 2012-11-06
Cách thiết lập server ảo Apache trên Arch Linux 2012-09-11
Cách tạo trang 404 tùy chỉnh trong Apache 2012-07-10
Cách tạo chứng chỉ SSL trên Apache cho CentOS 6 2012-06-06
Cách thiết lập server ảo Apache trên CentOS 6 2012-06-03
Cách cài đặt Rails, Apache và MySQL trên Ubuntu với Passenger 2012-06-01