0

Cách tạo Chứng chỉ SSL trên Apache cho Debian 8

Giới thiệu

Hướng dẫn này hướng dẫn bạn qua thiết lập và cấu hình của máy chủ Apache được bảo mật bằng chứng chỉ SSL. Đến cuối hướng dẫn, bạn sẽ có một máy chủ có thể truy cập thông qua HTTPS.

SSL dựa trên khả năng hấp thụ toán học của việc giải quyết một số nguyên lớn vào các yếu tố chính cũng lớn của nó. Sử dụng điều này, chúng tôi có thể mã hóa thông tin bằng cách sử dụng cặp khóa công khai riêng. Tổ chức phát hành chứng chỉ có thể phát hành chứng chỉ SSL để xác minh tính xác thực của kết nối được bảo mật đó và trên cùng một lưu ý, chứng chỉ tự ký có thể được tạo mà không cần hỗ trợ của bên thứ ba.

Trong hướng dẫn này, chúng tôi sẽ tạo một chứng chỉ tự ký, tạo các cấu hình cần thiết và kiểm tra kết quả. Chứng chỉ tự ký là rất tốt để thử nghiệm, nhưng sẽ dẫn đến lỗi trình duyệt cho người dùng của bạn, vì vậy chúng không được khuyến nghị cho sản xuất.

Thay vào đó, nếu bạn muốn nhận chứng chỉ trả phí, vui lòng xem hướng dẫn này.

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần:

  • Một giọt Debian 8 mới
  • Người dùng không phải root sudo, bạn có thể thiết lập bằng cách làm theo các bước 2 và 3 của hướng dẫn này
  • OpenSSL được cài đặt và cập nhật (nên được cài đặt theo mặc định)

    sudo apt-get update

    sudo apt-get upgrade openssl

Bạn có thể muốn một máy tính thứ hai có OpenSSL được cài đặt, cho mục đích thử nghiệm:

  • Một giọt Linux khác
  • Hoặc, một hệ thống cục bộ dựa trên Unix (Mac, Ubuntu, Debian, v.v.)

Bước 1 - Cài đặt Apache

Trong bước này, chúng tôi sẽ sử dụng tích hợp sẵn gói cài đặt gọi là apt-get. Nó đơn giản hóa việc quản lý gói một cách quyết liệt và tạo điều kiện cho việc cài đặt sạch sẽ.

Trong liên kết được chỉ định trong các điều kiện tiên quyết, bạn nên cập nhật apt-get và cài đặt sudo gói, không giống như các bản phân phối Linux khác, Debian 8 không đi kèm với sudo Cài đặt.

Apache sẽ là máy chủ HTTPS của chúng tôi. Để cài đặt nó, hãy chạy như sau:

sudo apt-get install apache2

Bước 2 - Kích hoạt mô-đun SSL

Trong phần này, chúng tôi sẽ kích hoạt SSL trên máy chủ của chúng tôi.

Đầu tiên, kích hoạt module Apache SSL.

sudo a2enmod ssl

Trang web Apache mặc định đi kèm với một mẫu hữu ích để kích hoạt SSL, vì vậy chúng tôi sẽ kích hoạt trang web mặc định ngay bây giờ.

sudo a2ensite default-ssl

Khởi động lại Apache để đặt những thay đổi này có hiệu lực.

sudo service apache2 reload

Bước 3 - Tạo chứng chỉ SSL tự ký

Đầu tiên, chúng ta hãy tạo một thư mục mới, nơi chúng ta có thể lưu trữ khóa riêng và chứng chỉ.

sudo mkdir /etc/apache2/ssl

Tiếp theo, chúng tôi sẽ yêu cầu một chứng chỉ mới và ký tên vào đó.

Đầu tiên, tạo một chứng chỉ mới và một khóa riêng để bảo vệ nó.

  • Các days cờ chỉ định thời gian chứng chỉ sẽ vẫn hợp lệ. Với ví dụ này, chứng chỉ sẽ kéo dài trong một năm
  • Các keyout cờ chỉ định đường dẫn đến khóa được tạo của chúng tôi
  • Các out cờ chỉ định đường dẫn đến chứng chỉ được tạo của chúng tôi

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Gọi lệnh này sẽ dẫn đến một loạt các lời nhắc.

  • Tên gọi chung: Chỉ định địa chỉ IP hoặc tên máy chủ của máy chủ của bạn. Trường này quan trọng vì chứng chỉ của bạn cần khớp với tên miền (hoặc địa chỉ IP) cho trang web của bạn
  • Điền vào tất cả các lĩnh vực khác theo quyết định của riêng bạn.

Các câu trả lời mẫu được hiển thị trong đỏ phía dưới.

InteractiveYou 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]:DigitalOcean
Organizational Unit Name (eg, section) []:SSL Certificate Test
Common Name (e.g. server FQDN or YOUR name) []:example.com               
Email Address []:test@example.com

Đặt quyền của tệp để bảo vệ khóa cá nhân và chứng chỉ của bạn.

sudo chmod 600 /etc/apache2/ssl/*

Để biết thêm thông tin về mã quyền gồm ba chữ số, hãy xem hướng dẫn về Quyền Linux.

Chứng chỉ của bạn và khóa riêng tư bảo vệ nó hiện đã sẵn sàng để Apache sử dụng.

Bước 4 - Định cấu hình Apache để sử dụng SSL

Trong phần này, chúng tôi sẽ cấu hình máy chủ ảo Apache mặc định để sử dụng khóa SSL và chứng chỉ. Sau khi thực hiện thay đổi này, máy chủ của chúng tôi sẽ bắt đầu phân phối HTTPS thay vì yêu cầu HTTP cho trang web mặc định.

Mở tệp cấu hình máy chủ bằng nano hoặc trình soạn thảo văn bản yêu thích của bạn.

sudo nano /etc/apache2/sites-enabled/default-ssl.conf

Tìm phần bắt đầu bằng <VirtualHost _default_:443> và thực hiện các thay đổi sau.

  • Thêm một dòng với tên máy chủ của bạn trực tiếp bên dưới ServerAdmin dòng email. Đây có thể là tên miền hoặc địa chỉ IP của bạn:

/etc/apache2/sites-enabled/default

ServerAdmin webmaster@localhost
ServerName example.com:443
  • Tìm hai dòng sau và cập nhật đường dẫn để khớp với vị trí của chứng chỉ và khóa mà chúng tôi đã tạo trước đó. Nếu bạn đã mua chứng chỉ hoặc tạo chứng chỉ của mình ở nơi khác, hãy đảm bảo các đường dẫn tại đây khớp với vị trí thực tế của chứng chỉ và khóa của bạn:

/etc/apache2/sites-enabled/default

 SSLCertificateFile /etc/apache2/ssl/apache.crt
 SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Khi những thay đổi này đã được thực hiện, hãy kiểm tra xem tệp cấu hình máy chủ ảo của bạn có khớp với những điều sau không.

/etc/apache2/sites-enabled/default-ssl

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName example.com:443
        DocumentRoot /var/www/html

        . . .
        SSLEngine on

        . . .

        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Lưu và thoát tệp.

Khởi động lại Apache để áp dụng các thay đổi.

sudo service apache2 reload

Để tìm hiểu thêm về định cấu hình máy chủ ảo Apache nói chung, hãy xem bài viết này.

Bước 5 - Kiểm tra Apache bằng SSL

Trong phần này, chúng tôi sẽ kiểm tra kết nối SSL của bạn từ dòng lệnh.

Bạn có thể chạy thử nghiệm này từ một trong hai (1) hệ thống dựa trên Unix cục bộ của bạn, (2) một giọt khác, hoặc (3) cùng một giọt. Nếu bạn chạy nó từ một hệ thống bên ngoài, bạn sẽ xác nhận rằng trang web của bạn có thể truy cập qua Internet công cộng.

Mở kết nối qua cổng HTTPS 443.

openssl s_client -connect your_server_ip:443

Di chuyển đến giữa đầu ra (sau phím), và bạn sẽ tìm thấy những điều sau đây:

Output—-
SSL handshake has read 3999 bytes and written 444 bytes
—-

. . .

SSL-Session:

. . .

Tất nhiên, các con số là biến, nhưng đây là thành công. Xin chúc mừng!

nhấn CTRL+C để thoát.

Bạn cũng có thể truy cập trang web của mình trong trình duyệt web, sử dụng HTTPS trong URL (https://example.com). Trình duyệt của bạn sẽ cảnh báo bạn rằng chứng chỉ được tự ký. Bạn sẽ có thể xem chứng chỉ và xác nhận rằng các chi tiết khớp với những gì bạn đã nhập trong Bước 3.

Phần kết luận

Điều này kết thúc hướng dẫn của chúng tôi, để lại cho bạn một máy chủ Apache đang hoạt động, được cấu hình an toàn với chứng chỉ SSL. Để biết thêm thông tin về cách làm việc với OpenSSL, hãy xem bài viết về OpenSSL Essentials.

Thêm Bình Luận