Thứ hai, 21/07/2014 | 00:00 GMT+7

Cách tạo chứng chỉ ECC trên Nginx cho Debian 7

Hướng dẫn này sẽ tạo cặp public key và private key Elliptic Curve Cryptography (ECC) để sử dụng với Nginx, một server HTTP hiệu suất cao. Khóa ECC cung cấp một vài lợi thế so với khóa RSA truyền thống. Khóa ECC cung cấp khả năng bảo mật tương đương với khóa RSA lớn hơn trong khi kích thước nhỏ hơn, giảm tài nguyên cần thiết trên server và mang lại hiệu suất nhanh hơn cho thiết bị di động.

Việc sử dụng ECC có thể cải thiện hiệu suất cho phương tiện truyền trực tuyến, kết nối VPN hoặc các ứng dụng băng thông cao khác. Cơ quan cấp certificate (CA) như Symantec đã bắt đầu cung cấp certificate chụp ảnh ECC hoặc E lliptic C urve C. Nếu bạn đã kết nối với một trang web trước khi sử dụng bí mật chuyển tiếp hoặc bí mật chuyển tiếp hoàn hảo, bạn đã sử dụng mật mã đường cong elliptic! Hướng dẫn này nêu chi tiết các bước cần thiết để triển khai public certificate và private key ECC tự ký với Nginx trên hệ thống Debian Wheezy, sử dụng đường cong prime256v1 .

Lưu ý: Có nhiều loại đường cong khác nhau mà bạn có thể sử dụng. Ta đang sử dụng đường cong prime256v1 để giữ cho bài viết này đơn giản.

Yêu cầu

  • Server với Debian 7.0 Wheezy .
  • Đã cài đặt và cập nhật OpenSSL.

Chạy:

    apt-get update && apt-get upgrade 

Sau khi cập nhật, bạn nên khởi động lại Server của bạn .

  • Trình duyệt hiện đại: Internet Explorer 7+ (Windows Vista, Windows 7), Firefox 19+ (Linux, Mac, Windows) hoặc Chrome 25+ (Android, Linux, Mac, Windows). Ta sẽ sử dụng Firefox để thử nghiệm trong hướng dẫn này.

Tất cả các lệnh dưới đây phải được thực thi với quyền user root.

Bước 1: Cài đặt Nginx

Cài đặt Nginx bằng trình quản lý gói apt-get. Nginx là một server HTTP hiệu suất cao có thể xử lý một số lượng lớn các yêu cầu đồng thời mà không chiếm một lượng lớn bộ nhớ trên Server. Các gói bổ sung cần được cài đặt. Để chấp nhận cài đặt, hãy nhập Y , sau đó nhấn phím Enter .

apt-get install nginx  

Bước 2: Tạo và ký private key ECC

Tạo một folder để lưu trữ private key , yêu cầu ký certificate và certificate server . Tôi khuyên bạn nên tạo folder /etc/nginx/ssl . Sau đó chuyển vào folder .

mkdir /etc/nginx/ssl cd /etc/nginx/ssl 

Tạo private key ECC bằng công cụ ecparam của OpenSSL. Lệnh này tạo private key 256 bit bằng cách sử dụng đường cong ECC prime256v1 và lưu khóa bên trong file có tên privatekey.key . Khóa 256 bit này tương đương với private key RSA 2048 bit.

openssl ecparam -out privatekey.key -name prime256v1 -genkey 

Sử dụng OpenSSL để tạo yêu cầu ký certificate .

openssl req -new -key privatekey.key -out csr.pem 

Khi chạy lệnh này, bạn sẽ được giải đáp một số câu hỏi. Đối với dấu nhắc Tên chung , hãy đảm bảo nhập địa chỉ IP hoặc tên server của server của bạn. Không cung cấp một password thách thức. Tất cả các trường khác có thể được điền thông tin khi bạn thấy phù hợp.

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) []:New York Organization Name (eg, company) [Internet Widgits Pty Ltd]:Digital Ocean Tutorial Organizational Unit Name (eg, section) []:ECC Certificate Test Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:  Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 

Lưu ý: Đến đây, bạn có thể gửi certificate của bạn cho cơ quan có thẩm quyền để ký. Thực hiện theo các hướng dẫn do CA bạn chọn. Symantec hiện đang cung cấp certificate ECC và nhiều cơ quan cấp certificate dự kiến sẽ cung cấp certificate ECC trong tương lai. Vì mục đích của hướng dẫn này, một certificate tự ký sẽ được tạo thay thế.

Tạo certificate hoặc public key . Chứng chỉ được client sử dụng để mã hóa dữ liệu mà chỉ server mới có thể đọc được. Công cụ OpenSSL x509 được sử dụng để tạo certificate tự ký bằng cách sử dụng yêu cầu ký certificate (CSR). Nếu bạn muốn làm cho certificate có giá trị trong một thời gian dài hơn, bạn có thể thay đổi giá trị -days từ 365 thành 3650, tạo certificate có giá trị trong 10 năm.

openssl req -x509 -days 365 -key privatekey.key -in csr.pem -out certificate.pem 

Đặt quyền đối với file để không user nào khác có thể truy cập vào private key và certificate của bạn.

chmod 600 /etc/nginx/ssl/* 

Bước 3: Cấu hình Nginx với Khóa và Chứng chỉ ECC

Mở cấu hình server ảo Nginx mặc định bằng editor mà bạn chọn. Theo mặc định, file cấu hình gói Nginx được đặt để chỉ phục vụ các yêu cầu HTTP. Bây giờ ta sẽ cấu hình Nginx để phục vụ các yêu cầu HTTPS.

vi /etc/nginx/sites-enabled/default 

Gần cuối file cấu hình server ảo mặc định Nginx là cấu hình mẫu cho server HTTPS có dòng listen 443; gần trên đỉnh, gần vị trí dẫn đầu. Bỏ ghi chú các dòng và cập nhật khối server HTTPS của bạn để trùng với ví dụ được hiển thị bên dưới. Bạn sẽ chỉnh sửa hầu hết các dòng, vì vậy hãy chú ý!

Khi thay đổi giá trị, hãy đảm bảo bạn để dấu chấm phẩy (;) ở cuối mỗi dòng.

#HTTPS server # server {     listen 443;     server_name Your IP Address or Hostname; #     root /usr/share/nginx/www;     index index.html index.htm; #     ssl on;     ssl_certificate /etc/nginx/ssl/certificate.pem;     ssl_certificate_key /etc/nginx/ssl/privatekey.key; #     ssl_session_timeout 5m; #     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     ssl_ciphers HIGH+kEECDH+AESGCM:HIGH+kEECDH:HIGH+kEDH:HIGH:!aNULL;     ssl_prefer_server_ciphers on; #     location / {         try_files $uri $uri/ =404;     } } 

Khi khối server HTTPS của bạn trùng với ví dụ trên, hãy lưu các thay đổi .

Lưu ý có thể yêu cầu các thay đổi bổ sung đối với khối server HTTPS tùy thuộc vào cấu hình hiện có của Cloud Server. Ví dụ: nếu server cloud của bạn đang chạy PHP, bạn cần sao chép các dòng mà bạn đã thêm vào khối HTTP để hỗ trợ PHP vào khối HTTPS của bạn .

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

service nginx restart 

Bước 4: Kiểm tra Nginx với ECC

Ta sẽ sử dụng Firefox để thử nghiệm, mặc dù bất kỳ trình duyệt web hiện đại nào cũng sẽ hoạt động để truy cập trang web và sử dụng mã hóa ECC.

Sử dụng Firefox để duyệt đến địa chỉ IP hoặc tên server của server cloud của bạn. Sau khi chấp nhận cảnh báo certificate tự ký, bạn sẽ thấy thông báo “Chào mừng bạn đến với nginx!” trang. Bạn sẽ nhận được cảnh báo về certificate vì certificate của server đã được tự ký và chưa được ký bởi tổ chức phát hành certificate được trình duyệt web công nhận.

https: // IP HOẶC HOSTNAME

Xem cảnh báo ban đầu bên dưới:

Thông tin certificate  Firefox

Chấp nhận certificate .

Nếu bạn đang sử dụng Mozilla Firefox, hãy nhấp vào ổ khóa gần tiền tố https: // trong thanh địa chỉ. Cửa sổ thông tin kết nối sẽ xuất hiện.

Thông tin kết nối Firefox

Bấm vào nút Thông tin khác… . Trong cửa sổ mới, dưới tab Bảo mật , bấm vào nút Xem Chứng chỉ . Chọn tab Chi tiết . Cuộn xuống và chọn trường Thông số thuật toán . Trong vùng văn bản Giá trị trường bên dưới, bạn sẽ thấy văn bản bao gồm đường cong elliptic prime256v1 , biểu thị certificate ECC.

Trình xem certificate  Firefox

Trường Khóa công khai của Chủ đề sẽ hiển thị kích thước public key là 256 bit.

Trình xem certificate  Firefox

Xin chúc mừng! Server Nginx của bạn hiện đã được cấu hình với certificate và private key ECC!


Tags:

Các tin liên quan

Cách thiết lập cân bằng tải Nginx với kết thúc SSL
2014-07-17
Cách cài đặt Laravel với web server Nginx trên Ubuntu 14.04
2014-06-24
Cách cài đặt gpEasy CMS với NGINX và PHP5-FPM trên Debian 7
2014-06-03
Cách sử dụng Nginx làm Giám đốc lưu lượng toàn cầu trên Debian hoặc Ubuntu
2014-05-30
Cách sử dụng HAProxy làm bộ cân bằng tải lớp 7 cho WordPress và Nginx trên Ubuntu 14.04
2014-05-27
Cách cung cấp tệp mật khẩu KeePass2 với Nginx trên server Ubuntu 14.04
2014-05-16
Cách cài đặt WordPress với Nginx trên Ubuntu 14.04
2014-05-15
Cách tạo chứng chỉ SSL trên Nginx cho Ubuntu 14.04
2014-05-09
Cách tạo chứng chỉ SSL trên Nginx cho Ubuntu 14.04
2014-05-09
Cách cài đặt Nginx trên Ubuntu 14.04 LTS
2014-04-29