Định cấu hình SSL cho Docker

Thiết lập SSL cho Docker của bạn bằng proxy Nginx.

Khi bạn đã cài đặt Kendis Docker và nó hoạt động, bạn có thể làm theo các bước sau để định cấu hình SSL.

Bước 1: Tạo thư mục

Tạo một thư mục với tên ” docker_ssl_proxy ” để lưu trữ tệp cấu hình NGINX cũng như chứng chỉ và khóa

 $ mkdir docker_ssl_proxy

Bước 2: Thay đổi thư mục thành docker_ssl_proxy

Bạn phải ở dưới thư mục này trước khi thực hiện các bước (lệnh) sau.

Bước 2.a: Sử dụng chứng chỉ đã ký

Nếu bạn có chứng chỉ, bạn chỉ cần sao chép 2 tệp sau vào thư mục hiện tại
key.pem
cert.pem

Bước 2.b Tạo chứng chỉ tự ký (Nếu cần)

Sử dụng OpenSSL để tạo chứng chỉ tự ký, Lệnh sau sẽ tạo chứng chỉ tự ký và khóa cá nhân có hiệu lực trong 365 ngày.

 $ openssl req -subj '/CN=localhost' -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365

Bước 3: Tìm địa chỉ IP vùng chứa của bạn

3.1: Tìm Id vùng chứa kendis của bạn. 

$ docker ps

Nó sẽ liệt kê tất cả các quy trình đang chạy và tìm ra id vùng chứa Kendis của bạn.

3.2 Tìm địa chỉ IP

Để tìm địa chỉ IP vùng chứa từ máy chủ, bạn có thể chạy lệnh

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'  <kendis-contrainer-id>

<kendis-container-id>: thay thế giá trị này bằng giá trị mà bạn nhận được từ Bước 4.1

Phản hồi của lệnh trên sẽ là một địa chỉ IP, ví dụ: 

“123.12.2.1”

Bước 4: Tạo tệp cấu hình NGINX

Trong cùng một thư mục, hãy tạo một tệp cấu hình sẽ ủy quyền tất cả lưu lượng truy cập đến máy chủ ngược dòng của bạn. Máy chủ ngược dòng là máy chủ ứng dụng chạy kết nối không phải SSL. SSL sẽ sử dụng NGINX và tất cả lưu lượng sẽ được ủy quyền cho máy chủ lưu trữ (sử dụng địa chỉ IP mà bạn có ở Bước 3.2)

Tệp cấu hình, trong ví dụ này được gọi là “proxy_ssl.conf”, nhưng có thể có bất kỳ tên nào miễn là nó kết thúc bằng .conf. Hồ sơ phải có các nội dung sau

Tệp ví dụ: proxy_ssl.conf

 server {  listen 443;  ssl on;  ssl_certificate /etc/nginx/conf.d/cert.pem;  ssl_certificate_key /etc/nginx/conf.d/key.pem;  location / {  proxy_pass http://123.12.2.1:8080;  proxy_set_header Host $host;  proxy_set_header X-Forwarded-For $remote_addr; }}

Điều duy nhất bạn cần thay thế trong tệp này là Địa chỉ IP. Chúng tôi đang sử dụng ví dụ IP 123.12.2.1.

Please note, port shouldn't be changed, it must remain as 8080.

Tệp này chỉ hướng dẫn NginX lắng nghe, với SSL và các chứng chỉ và khóa chính xác, trên cổng 443 và ủy quyền tất cả các yêu cầu tới máy chủ lưu trữ trên cổng 8080

Bước 5: Chạy bộ chứa docker

Tại thời điểm này, chúng tôi đã có tất cả cấu hình để ủy quyền lưu lượng truy cập, chúng tôi chỉ cần chạy bộ chứa docker bằng lệnh sau

$ docker run --name nginx_proxy -d -v pwd:/etc/nginx/conf.d -p 443:443 nginx


LƯU Ý : Trong trường hợp bạn gặp sự cố, hãy thử thay thế PWD trong lệnh trên bằng đường dẫn thư mục đầy đủ cho “docker_ssl_proxy”, nơi bạn có tệp cấu hình và chứng chỉ. 

$docker run --name nginx_proxy -d -v <yourdirectory>:/etc/nginx/conf.d -p 443:443 nginx


Tất cả đã được làm xong. 

Chỉ cần mở trình duyệt và nhấn vào URL bằng HTTPS.