Thứ sáu, 19/06/2015 | 00:00 GMT+7

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

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

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

Trong hướng dẫn này, ta sẽ tạo certificate 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ý rất tốt để thử nghiệm, nhưng sẽ dẫn đến lỗi trình duyệt cho user của bạn, vì vậy chúng không được đề xuất cho production .

Nếu bạn muốn lấy certificate trả phí, vui lòng xem hướng dẫn này .

Yêu cầu

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

  • Một server Debian 8 mới
  • User sudo không phải root, bạn có thể cài đặt theo 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ể cần một máy tính thứ hai được cài đặt OpenSSL, cho mục đích thử nghiệm:

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

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

Trong bước này, ta sẽ sử dụng một trình cài đặt gói tích apt-get tên là apt-get . Nó giúp đơn giản hóa việc quản lý gói một cách đáng kể và tạo điều kiện cài đặt sạch sẽ.

Trong liên kết được chỉ định trong yêu cầu , bạn nên cập nhật apt-get và cài đặt gói sudo , vì không giống như các bản phân phối Linux khác, Debian 8 không được cài đặt sudo .

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

  • sudo apt-get install apache2

Bước 2 - Bật module SSL

Trong phần này, ta sẽ bật SSL trên server của bạn .

Đầ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 ta sẽ kích hoạt trang web mặc định ngay bây giờ.

  • sudo a2ensite default-ssl

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

  • sudo service apache2 reload

Bước 3 - Tạo certificate SSL tự ký

Đầu tiên, hãy tạo một folder mới nơi ta có thể lưu trữ private key và certificate .

  • sudo mkdir /etc/apache2/ssl

Tiếp theo, ta sẽ yêu cầu một certificate mới và ký tên vào nó.

Đầu tiên, tạo một certificate mới và một private key để bảo vệ nó.

  • Cờ days chỉ định thời gian certificate sẽ còn hiệu lực. Với ví dụ này, certificate sẽ tồn tại trong một năm
  • Cờ keyout chỉ định đường dẫn đến khóa đã tạo của ta
  • Cờ out chỉ định đường dẫn đến certificate đã tạo của ta
  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Việc gọi lệnh này sẽ dẫn đến một loạt các dấu nhắc .

  • Tên chung : Chỉ định địa chỉ IP hoặc tên server của server của bạn. Trường này quan trọng, vì certificate của bạn cần phải trùng với domain (hoặc địa chỉ IP) cho trang web
  • Điền vào tất cả các trường khác theo quyết định của bạn .

Câu trả lời ví dụ được hiển thị bằng màu đỏ bên dưới.

Interactive
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]: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 đối với file để bảo vệ private key và certificate 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 của Linux .

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

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

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

Mở file cấu hình server bằng nano hoặc editor 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à áp dụng các thay đổi sau.

  • Thêm một dòng với tên server của bạn ngay bên dưới dòng email ServerAdmin . Đây có thể là domain hoặc địa chỉ IP của bạn:
/ etc / apache2 / sites-enable / default
ServerAdmin webmaster@localhost ServerName example.com:443 
  • Tìm hai dòng sau và cập nhật các đường dẫn để trùng với vị trí của certificate và khóa mà ta đã tạo trước đó. Nếu bạn đã mua certificate hoặc tạo certificate của bạn ở nơi khác, hãy đảm bảo các đường dẫn ở đây trùng với vị trí thực của certificate và khóa của bạn:
/ etc / apache2 / sites-enable / 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 file cấu hình server ảo của bạn có trùng với file sau đây không.

/ etc / apache2 / sites-enable / 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 khỏi file .

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

  • sudo service apache2 reload

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

Bước 5 - Kiểm tra Apache với SSL

Trong phần này, ta 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ừ (1) hệ thống dựa trên Unix local của bạn , (2) Server khác hoặc (3) cùng Server. Nếu bạn chạy nó từ một hệ thống bên ngoài, bạn sẽ xác nhận trang web có thể truy cập được qua Internet công cộng.

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

  • openssl s_client -connect your_server_ip:443

Cuộn đến giữa kết quả (sau phím), và bạn sẽ thấy như sau:

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

Tất nhiên, các con số có thể thay đổi, 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 bạn 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 certificate đã được tự ký. Bạn có thể xem certificate và xác nhận các chi tiết trùng với những gì bạn đã nhập ở Bước 3.

Kết luận

Phần này kết thúc hướng dẫn của ta , để lại cho bạn một server Apache đang hoạt động, được cấu hình an toàn với certificate 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 Cơ bản về OpenSSL .


Tags:

Các tin liên quan

Cách cài đặt Apache Tomcat 8 trên CentOS 7
2015-06-19
Cách cài đặt Apache Tomcat 8 trên Ubuntu 14.04
2015-06-19
Cách cài đặt Apache Tomcat 7 trên CentOS 7 qua Yum
2015-06-15
Cách cấu hình Apache để sử dụng các trang lỗi tùy chỉnh trên Ubuntu 14.04
2015-06-09
Cách cấu hình Apache để sử dụng các trang lỗi tùy chỉnh trên CentOS 7
2015-06-09
Cách thiết lập ModSecurity với Apache trên Ubuntu 14.04 và Debian 8
2015-06-05
Cách chạy trang web Django với Apache, mod_wsgi và MySQL trên FreeBSD 10.1
2015-05-29
Cách chuyển hướng www thành không có www bằng Apache trên Ubuntu 14.04
2015-05-04
Cách chuyển hướng www thành không có www bằng Apache trên CentOS 7
2015-05-04
Cách thiết lập server Apache, MySQL và Python (LAMP) mà không cần khung trên Ubuntu 14.04
2015-04-29