Cách xây dựng một chứng chỉ SSL tự kí trên Linux

0

SSL hiện đang dần trở thành một tiêu chuẩn phải có đối với các website. Bên cạnh đó các chứng chỉ Let’s Encrypt miễn phí trở nên cực kỳ phổ biến, không có lý do gì để mọi người không sử dụng SSL – chưa kể đến lợi ích xếp hạng tìm kiếm và thực tế là các trình duyệt sẽ tin tưởng trang web của bạn.

Tuy nhiên, bạn cũng có thể tạo chứng chỉ SSL tự ký của riêng mình để sử dụng riêng trên máy chủ của mình. Một lý do lớn để làm điều này là mã hóa. Mặc dù chứng chỉ cá nhân của bạn không có ý nghĩa gì với trình duyệt và khách truy cập vẫn sẽ nhận được thông báo cảnh báo nếu họ truy cập trực tiếp vào trang web của bạn, ít nhất bạn cũng có thể chắc chắn rằng bạn được bảo vệ chống lại các cuộc tấn công “man-in-the-middle”. Chứng chỉ tự ký là bước đầu tiên tốt khi bạn chỉ kiểm tra mọi thứ trên máy chủ của mình và có lẽ thậm chí không có tên miền.

Đây là quy trình từng bước về cách tạo chứng chỉ SSL tự ký trên Linux.

Bước 1: Tạo một cặp khóa RSA

Bước đầu tiên là sử dụng gói “openssl” trên Linux / CentOS để tạo cặp khóa RSA. Để thực hiện việc này, hãy đảm bảo rằng bạn đã cài đặt gói. Nếu không, hãy cài đặt nó bằng:

sudo yum install openssl

Rất có thể là bạn đã có sẵn trên hệ thống của mình. Nếu vậy, hãy tạo khóa / cặp bằng lệnh sau:

openssl genrsa -des3 -passout pass:x -out keypair.key 2048

Lệnh này sử dụng mã hóa 2048 bit và xuất ra một tệp có tên là “keypair.key” như được hiển thị ở đây:

Như bạn có thể thấy, khóa đã được tạo và được đặt trong thư mục hiện tại.

Bước 2: Giải nén khóa cá nhân vào thư mục “httpd”

Thư mục “/ etc / httpd” là nơi hệ thống lưu giữ tất cả các công cụ quan trọng liên quan đến SSL. Đầu tiên, hãy tạo một thư mục mới để giữ tất cả các tệp liên quan đến khóa riêng của chúng tôi:

sudo mkdir / etc / httpd / httpscertificate

Tôi đã gọi thư mục “httpscertificate” và sẽ tham chiếu đến nó cho tất cả các ví dụ dòng lệnh khác.

Để trích xuất khóa cá nhân từ tệp cặp khóa mà chúng tôi vừa tạo, hãy nhập như sau:

openssl rsa -passin pass:x -in keypair.key -out /etc/httpd/httpscertificate/012.345.678.90.key

Thay thế phần in đậm bằng địa chỉ IP của máy chủ của riêng bạn. Hoặc nếu bạn có thể truy cập trang web của mình bằng tên miền, bạn cũng có thể sử dụng tên miền đó.

Thao tác này sẽ tạo tệp “khóa” trong thư mục mà chúng tôi vừa tạo. Và khi đã xong, chúng ta có thể xóa tập tin keypair gốc:

rm keypair.key

Bước 3: Tạo “Yêu cầu ký chứng chỉ” hoặc tệp CSR

Với khóa, chúng tôi có thể tạo một tệp “csr” đặc biệt mà chúng tôi có thể ký tên hoặc gửi đến “Tổ chức phát hành chứng chỉ”. Nó ở định dạng chuẩn. Để tạo nó, gõ lệnh sau:

openssl req -new -key /etc/httpd/httpscertificate/012.345.678.90.key -out /etc/httpd/httpscertificate/012.345.678.90.csr

Một lần nữa, thay thế các mục in đậm bằng địa chỉ IP hoặc tên miền mà bạn đã đặt ở bước 2. Khi bạn chạy lệnh này, công cụ sẽ hỏi bạn một loạt thông tin cá nhân:

CA có thể sử dụng các chi tiết này để xác minh rằng bạn thực sự là người quản lý chứn chỉ. Điền vào càng nhiều thông tin càng tốt.

Khi bạn đã hoàn thành việc nhập các chi tiết này, công cụ sẽ kết thúc công việc của nó và đặt một tệp “csr” vào thư mục mà chúng tôi đã tạo cho mục đích này.

Bước 4: Tạo chứng chỉ “.crt”

Với CSR, chúng ta có thể tạo tệp chứng chỉ cuối cùng như sau:

openssl x509 -req -days 365 -in /etc/httpd/httpscertificate/012.345.678.90.csr -signkey /etc/httpd/httpscertificate/012.345.678.90.key -out /etc/httpd/httpscertificate/012.345.678.90.crt

Điều này tạo ra một “crt” tập tin cùng với tất cả những người khác. Đây là ảnh chụp màn hình của các tệp cuối cùng trong thư mục bảo mật của chúng tôi:

Bây giờ chúng ta cần nói cho Apache biết các tệp này ở đâu.

Bước 5: Định cấu hình Apache để sử dụng các tệp

Đầu tiên, chúng ta cần cài đặt gói “mod_ssl” bằng lệnh:

sudo yum install mod_ssl

Sau khi thực hiện, điều này sẽ đặt một tập tin “ssl.conf” bên trong thư mục /etc/httpd/conf.d/. Chúng tôi cần sửa đổi tệp mặc định này:

sudo vi /etc/httpd/conf.d/ssl.conf

Bây giờ cuộn xuống cho đến khi bạn tìm thấy các dòng bắt đầu bằng:

SSLCertificateFile
SSL CertificateKeyFile

Thay đổi đường dẫn mặc định bằng đường dẫn đến tệp chứng chỉ và tệp khóa tương ứng như được hiển thị ở đây:

Lưu các thay đổi của bạn. Bây giờ chỉ cần khởi động lại Apache với:

sudo apachectl restart

Và bạn đã hoàn tất! Khi Apache khởi động lại, nó sẽ được cấu hình để cho phép các kết nối SSL.

Khi bạn kết nối với địa chỉ IP của mình qua HTTPS vào lần tiếp theo, bạn sẽ được cảnh báo rằng đây không phải là chứng chỉ đáng tin cậy:

Vậy là được rồi. Chúng tôi biết điều này vì chúng tôi đã tự ký nó! Chỉ cần tiếp tục và nó sẽ đưa bạn đến trang web cuối cùng:

Ở đây bạn có thể thấy rằng nó đang sử dụng chứng chỉ mà chúng tôi đã tạo. Nó không được sử dụng nhiều cho bất kỳ ai khác truy cập vào trang web của bạn vì họ không thể xác minh danh tính của bạn. Nhưng bạn biết nó an toàn, và hơn nữa nó được mã hóa . Và sẽ không có cuộc tấn công nào của man-the-middle.

Leave a Reply

Your email address will not be published. Required fields are marked *