Hướng dẫn chuyển đổi từ http sang HTTPS áp dụng cho (Unix,Cpanel)

Bài viết sau mình sẽ hướng dẫn các bạn chuyển từ giao thức http không mã hóa sang giao thức đã được mã hóa sử dụng chứng chỉ số là (HTTPS).

Giao thức http sử dụng cổng 80 để giao tiếp với client còn https được gán cho với cổng 443 chạy trên TLS/SSL (Transport Layer Security/Secure Sockets Layer) để mã hóa và truyền dữ liệu từ webserver đến client. Để mà mổ sẻ cái TLS/SSL mình hẹn các bạn ở bài viết khác. Bây giờ tiếp tục nha!

Giới thiệu qua về giao thức https?

Https ngắn gọn nó là viết tắt của (HyperText Transfer Protocol Secure ).Khi bạn kết nối vào một webserver sử dụng HTTPS, trình duyệt sẽ kiểm tra chứng chỉ số của trang web này để xem xem chứng thực nói trên có được cung cấp bởi một đơn vị đáng tin cậy hay không.Khi kết nối với máy chủ xác thực qua HTTPS, trình duyệt của bạn sẽ hiện biểu tượng khóa ngay bên cạnh ô địa chỉ. Dữ liệu từ client đến server được mã hóa và được toàn vẹn dữ liệu

Giao thức này được Netscape Communications sáng tạo ra vào năm 1994 cho trình duyệt web Netscape Navigator. Tiếc rằng trình duyệt này bây giờ đã đi vào dĩ vãng.

Cài đặt https – SSl/TLS có lợi ích gì?

Sủ dụng https có những lợi ích sau:

–  Bảo mật thông tin cá nhân tốt hơn. Trước đây https được sử dụng nhiều trong giao dịch online thương mại điện tử như ngân hàng, Shop mua bán, trao đổi Email quan trọng. Vì những dữ liệu được truyền đi từ client (Trình duyệt) đến Webserver cần phải được mã hóa các thông tin nhạy cảm như Credit Card, Passwords…

Tuy nhiên: TLS/SSL cũng chỉ là một Layer (Application Layer) trong mô hình OSI, tính bảo mật của nó gần đây cũng đã bị các chuyên gia bảo mật tìm ra lỗ hổng. Có nhiều phương thức tấn công giao thức này 🙂 Trước đây hồi sinh viên 2010 mình cũng đã từng “vọc” cách tấn công này bằng cách sử dụng”Chứng chỉ số giả” 😀

SEO tốt hơn (Nó cũng là một tiêu chí đánh giá xếp hạng của Google), mặc dù nó ảnh hưởng chưa đến 1% truy vấn trên thế giới, các bạn không lo vì “Content” vẫn là “King”. Mặc khác Google vẫn khuyến khích bạn chuyển giao sang https. 

Tuy nhiên: Tốc độ sẽ giảm đi chút ít vì dữ liệu đã được mã hóa cho nên nặng hơn khi truyền tải ^.^!

Các bước cài đặt trên hệ điều hành (.Unix) và trên Cpanelx

Cài đặt SSL trên hệ điều hành Unix (Centos, Ubuntu…)

Cài đặt Openssl trên Ubuntu như sau Trên Centos tương tự:

wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar -xvzf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
sudo make install

Bước 1. Tạo thư mục chứa chứng chỉ

Ở bài này mình sẽ sử dụng thư mục/etc/ssl/

mkdir -p /etc/ssl
mkdir -p /etc/ssl/private
mkdir -p /etc/ssl/csr

Chú thích:

  • /etc/ssl/private – lưu giữ file .key chứa các private key để tạo CSR.
  • /etc/ssl/csr – chứa các file .csr để gửi yêu cầu xác nhận chứng thực đến nhà cung cấp chứng chỉ số.

Bước 2. Sử dụng  OpenSSL Tạo Private Key

Oánh lệnh sau:

openssl genrsa -out /etc/ssl/private/huongdan365.com.key 2048

Ở đây private key mình tạo là huongdan365.com.key

Bước 3: tạo một CSR Key (Certificate Signing Request):

Đuôi mở rộng của file này là .crt . Hiểu nôm na là Openssl sẽ sử dụng khóa riêng là chữ ký của bạn để ký lên chứng chỉ số cần được xác thực của bạn.

Vừa ta đã tạo ra file private key là: huongdan365.com.key và tiếp theo mình muốn tạo thêm một file tên CSR là /etc/ssl/csr/huongdan365.com.csr gõ tiếp lệnh sau:

openssl req -new -key /etc/ssl/private/huongdan365.com.key -out /etc/ssl/csr/huongdan365.com.csr

Tiếp theo bạn nhập đầy đủ các thông tin họ tên, quốc gia, công ty… Lưu ý tại mục hostname bạn phải điền đúng tên website của bạn ở đây web mình điền là huongdan365.com bỏ qua đoạn extra enter 2 phát.

Country Name (2 letter code) [XX]: Mã quốc gia, đối với Việt Nam là VN.
 State or Province Name (full name) []: Tên tỉnh thành
 Locality Name (eg, city) [Default City]: Tên thành phố/quận huyện
 Organization Name (eg, company) [Default Company Ltd]: Tên công ty, doanh nghiệp
 Organizational Unit Name (eg, section) []: Lĩnh vực hoạt động
 Common Name (eg, your name or your server's hostname) []: huongdan365.com (Không gõ http hay www đâu nha!)
 Email Address []: Địa chỉ Email
Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:

Và bây giờ sắp tới đích rồi bạn mở file crt vừa tạo ra

cat /etc/ssl/csr/huongdan365.com.csr

Copy hết đoạn từ

—–BEGIN CERTIFICATE REQUEST—–

Nội dung mã hóa SHA

—–END CERTIFICATE REQUEST—–

 

Lưu tạm ra file notepad nào đó, rồi bạn tìm thằng Root CA nào có máu mặt ký cho bạn :D, BKAV không ký được cái này đâu nha :))!

Mình biết có các nhà cung cấp dịch vụ SSL hàng đầu là: Comodo,Geotrust,Symantec,Thawte.  Bạn mua tại  http://www.ssls.com/ Chọn cái Positive SSL của Codomo giá là ~5$ / năm nếu mua 5 năm. Tạm dừng bước này ở đây mình hướng dẫn cách tạo SSL/TLS trên hosting Cpanel

Trên Cpanelx các bạn tạo file crt đơn giản hơn rất nhiều, các bạn theo hình ảnh sau:

ssl-cpanel

Chọn SSl/TLS

Tạo private key

Tạo private key

Tại đây tùy độ dài Key các bạn chọn là 2048 hoặc 4096 bits. Nhấn vào Generate để tạo

Tạo xong Key tiếp tục tạo CSR bấm vào dòng bên dưới của hình trên: Generate a New Certificate Signing Request (CSR) để tạo CSR

Các bạn nhấn vào box Key chọn key vừa tạo và điền các thông số, quốc gia, công ty… Lưu ý tại mục hostname bạn cũng điền tên domain không có http và www vd:huongdan365.com

Xong xuôi bạn cũng copy đoạn mã hóa:

—–BEGIN CERTIFICATE REQUEST—–

Nội dung mã hóa SHA

—–END CERTIFICATE REQUEST—–

Bước 4: Gửi xác thực SSL

Khi đã có mã CSR ở các bước trên tạo được khi sử dụng Linux hoặc Cpanel.

Bước này có thể khác nhau nếu bạn mua SSL ở nhà cung cấp như Comodo,namecheap, ssls.com. Các bạn đăng ký và cũng điền các thông tin cần thiết như tên website, quốc gia, công ty và upload hoặc copy đoạn mã hóa (CSR) và gửi cho bên cung cấp SSL họ sẽ ký xác thực cho domain của bạn và gửi file crt. File crt chứng chỉ số này được công nhận trên 99% trình duyệt

– Tại phần Select web server bạn chọn là cPanel hoặc Nginx(Webserver) và ở dưới bạn copy đoạn mã hóa Encoded SCR key vào nhé. Tiếp theo là nhấn Next và chọn email mà họ sẽ gửi crt chứng chỉ số cho website mình vào đó

instantssl-sslactivate2

– Nhận validation code tại email bạn đăng ký  SSL

ssl-email-2

 

Các bạn nhập mã này vào: Nhấp vào liên kết here trong email và điền mã kích hoạt ghi ở dưới vào.

Kích hoạt xong sẽ có 2 Email và có 1 Email có đính kèm file crt domain của các bạn vd như hình sau:

ssl-email

 

Giải nén ta được file quan trọng crt:

Install-an-SSL-Website-3

Bước 5: Kích hoạt SSL

– Đối với Cpanel hosting: Chọn SSl/TLS manager/Install and manage ssl for your site (https)

huong-dan-cai-dat-SSL-cpanel

 

Bấm chọn upload file crt: Browse certificates

Install-an-SSL-Website-2

Bấm install certificate

Gõ thử https://têndomain nếu hiện cái khóa màu xanh là ok

Install-an-SSL-Website-4

 

– Kích hoạt SSL cho Unix  webserver  Ví dụ như Nginx, LAMP. Việc mà chúng ta cần làm đó là sửa các thiết lập hiện tại (dành cho port 80) thành thiết lập dành port 443 trên apache, sau đó trỏ SSL Key đến file .key và .crt bạn đang có trong thư mục /etc/ssl vào. Cấu hình cho port 80 của domain tự động redirect 301 về HTTPS.

Bây giờ bạn mở file cấu hình domain lên và tìm (vd: /etc/nginx/conf.d/huongdan365.com.conf hoặc /etc/httpd/conf.d/vhost.conf):

Bây giờ bạn mở file cấu hình domain lên và tìm:

server {
 server_name domaincuaban.com www.domaincuaban.com;

Lưu ý là ở đoạn trên nếu không có phần Listen 80 thì mặc định nó sẽ sử dụng port 80 rồi, còn nếu file cấu hình của bạn có phần Listen 80 ở đây thì vẫn sửa thành:

server {
 listen 443;
 server_name domaincuaban.com www.domaincuaban.com;

Chèn thêm vào dưới nó

# SSL
ssl on;
ssl_certificate /etc/ssl/domaincuaban_com.crt;
ssl_certificate_key /etc/ssl/private/domaincuaban.com.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH;
ssl_prefer_server_ciphers on;

Nhớ sửa lại đường dẫn lưu file .crt và file .key thật chính xác nhé.

Sau đó chèn thêm đoạn này vào đầu file:

server {
 listen 80;
 server_name domaincuaban.com;
 return 301 https://domaincuaban.com$request_uri;
}

Lưu lại và khởi động lại NGINX.

service nginx restart

Trên webserver khác các bạn làm tương tự sửa file :

cat /etc/apache2/sites-available/default-ssl

Trong phần đó bắt đầu bằng <VirtualHost _default_: 443>, nhanh chóng thực hiện những thay đổi sau đây. Thêm một dòng với tên máy chủ của bạn ngay dưới email Server Admin:

ServerName domaincuaban.com:443

và:

ssl on;
ssl_certificate /etc/ssl/domaincuaban_com.crt;
ssl_certificate_key /etc/ssl/private/domaincuaban.com.key;

Bước 6: Kích hoạt https cho WordPress:

Cài cài plugin WordPress HTTPS và kích hoạt plugin này mở lên và kích hoạt force ssl cho Admin –> chọn Save

Rồi chèn đoạn sau vào file wp-config.php

define(‘WP_HOME’,’https://huongdan365.com’);
define(‘WP_SITEURL’,’https://huongdan365.com’);

Redirect 301 sang https các link cũ không có http sửa file htaccess thêm dòng sau:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]

Nếu website chạy https mà hiển thị màu vàng, thì lý do là có dữ liệu nào đóđang được tải với giao thức HTTP thông thường, kể cả các liên kết trỏ ra ngoài. Khi cài đặt plugin WordPress HTTPS hầu như đã khắc phục được lỗi SSL màu vàng.

Chúc bạn thành công ! Vote like cho mình lấy kinh nghiệm viết bài tiếp các bạn nha ^.^!

Scroll To Top