SSL Certificate thường được sử dụng trong việc mã hóa thông tin trao đổi giữa client và web server; không những thế SSL Certificate còn giúp client xác minh trang web đang kết nối tới là thật hay giả mạo. Trong hướng dẫn này SSL Certificate và Nginx web server được cài đặt trên nền Ubuntu Server 12.04.
Cài đặt SSL trên Nginx thì không khó, nhưng chưa chắc ai cài cũng thành công, bởi vì thường chỉ sai khi key tạo ra trên server để đưa lên trang mua chứng chỉ thực bị sai thế là không được công nhận chứng chỉ.
Cài đặt Nginx
Tiến hành update hệ điều hành:
sudo apt-get update sudo apt-get upgrade
Cài đặt Nginx:
sudo apt-get install nginx
Tạo Server Key và Certificate Signing Request
Tạo Private Server Key:
sudo openssl genrsa -des3 -out server.key 1024
Lưu ý: Trong quá trình tạo Private Server Key, bạn sẽ được yêu cầu nhập vào Passphrase. Passphrase đóng vai trò như một password dùng để bảo vệ Private Server Key tránh khỏi các truy cập trái phép. Vì vậy bạn phải ghi nhớ Passphrase mình đã nhập.
Generating RSA private key, 1024 bit long modulus .........................++++++ .............................................................................++++++ e is 65537 (0x10001) Enter pass phrase for server.key:**** Verifying - Enter pass phrase for server.key:****
Tạo Certificate Signing Request:
sudo openssl req -new -key server.key -out server.csr
Lưu ý:
- Trong quá trình tạo Certificate Signing Request bạn sẽ phải nhập vài thông số, trong đó quan trọng nhất là ”Common Name“; giá trị của thông số này chính là domain của trang web.
- “A challenge password” và “An optional company name” được để trống.
Country Name (2 letter code) [AU]:VN State or Province Name (full name) [Some-State]:HCM Locality Name (eg, city) []:HCM Organization Name (eg, company) [Internet Widgits Pty Ltd]:CloudVis Organizational Unit Name (eg, section) []:CloudVis Common Name (e.g. server FQDN or YOUR name) []:cloudvis.test Email Address []:admin@cloudvis.test Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Gỡ bỏ Passphrase ra khỏi Private Server Key
Bạn sẽ phải nhập lại Passphare mỗi lần restart lại Nginx; để thuận tiện hơn trong quá trình sử dụng ta có thể gỡ bỏ Passphrase. Tuy nhiên như vậy đồng nghĩa với việc giảm mức độ bảo mật của hệ thống. Để gỡ bỏ Passphrase ta sử dụng các câu lệnh sau:
sudo cp server.key server.key.npp sudo openssl rsa -in server.key.npp -out server.key
Sign SSL Certificate
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Cấu hình SSL Certificate hoạt động cùng Nginx
Tạo thư mục chứa Server Key và Server Certificate:
sudo mkdir /etc/nginx/ssl sudo cp ./server.key ./server.crt /etc/nginx/ssl/
Tạo file cấu hình Nginx:
sudo nano /etc/nginx/sites-available/default
Với đoạn:
server { listen 443; server_name cloudvis.test; root /usr/share/nginx/www; index index.html; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; }
Kích hoạt file cấu hình vừa tạo trên bằng cách tạo soft link vào thư mục “/etc/nginx/sites-enabled/”:
sudo ln -s /etc/nginx/sites-available/cloudvis.test /etc/nginx/sites-enabled/
Khởi động lại Nginx:
sudo /etc/init.d/nginx restart
Thực hiện kết nối tới Nginx Server:
Client đã kết nối tới Nginx Server thành công bằng giao thức https với SSL Certificate vừa được tạo ở các bước trên.
Tham khảo Cloudvis