Categories Bảo mật WordPress

Hướng dẫn chuyển từ HTTP sang HTTPS cho WordPress bằng [Let’s Encrypt]

Hướng dẫn chuyển từ HTTP sang HTTPS

Let’s Encrypt là công cụ để tạo chứng chỉ SSL, có nhiệm vụ đảm bảo kết nối tới website được bảo mật, với lợi điểm vô cùng quan trọng là nó miễn phí. Do vậy Let’s Encrypt rất thích hợp cho các website cá nhân, blog, hoặc trang bán hàng đơn giản. Còn các trang thương mại điện tử lớn có thể nên cân nhắc mua chứng chỉ SSL từ một nhà cung cấp thương mại uy tín (có thể có giá từ hơn chục đô cho đến hàng trăm đô, tùy chứng chỉ).

Ngoài việc đảm bảo kết nối bảo mật, một trong những lợi ích rất lớn khác của giao thức https là nó được công cụ tìm kiếm mạnh nhất thế giới hiện nay (Google) xem SSL là một trong các yếu tố xếp hạng (cứ cái gì có lợi ích cho người dùng, không sớm thì muộn sẽ được Google đưa vào để tính toán thứ hạng).

Hôm nay tôi sẽ hướng dẫn các bạn một số thao tác cơ bản để cài Let’s Encrypt.


Lưu ý: khi bạn chuyển hosting cho website, bạn cần phải đợi DNS cập nhật địa chỉ mới cho tên miền. Nếu dùng các công cụ như Cloudflare quá trình này rất nhanh, chỉ 1 – 2 phát là các bản ghi DNS đã được cập nhật trên toàn cầu. Và lúc này bạn mới tạo được chứng chỉ bảo mật trên hosting mới. Chừng nào nó còn trỏ IP về hosting cũ, bạn sẽ không tạo được. Bạn có thể dùng công cụ DNSchecker để kiểm tra.

cộng cụ kiểm tra bản ghi A của DNS

Hosting tôi sử dụng là DreamHost, họ cung cấp sẵn khả năng cài đặt Let’s Encypt rất dễ dàng. [Lưu ý nhỏ: Rất nhiều nhà cung cấp hosting khác, hoặc các control panel như directadmin, cPanel, cyberpanel cũng cung cấp thao tác cài đặt Let’s Encrypt tương tự, và thậm chí còn đơn giản hơn].

Trang web bạn đang đọc đây cũng được cài Let’s Encrypt, nên chúng ta sẽ sử dụng trang web khác để minh họa nhé.

DreamHost đưa cho tôi 3 gợi ý, cái đầu tiên là bạn sẽ phải bỏ tiền ra mua, của nhà cung cấp SSL Comodo, nó có giá 15$, cái thứ hai là SSL bạn tự đăng ký, còn cái thứ ba chính là cái mà chúng ta muốn áp dụng.

Bạn nhấn vào Add.

chọn Let's Encrypt

Tiếp đến là đồng ý với điều khoản của Let’s Encrypt. Ở đây tiếp tục có màn chào mời thương mại là IP tĩnh, bạn bỏ qua, không cần mua làm gì (IP tĩnh có tác dụng giúp những ai sử dụng trình duyệt cũ trên hệ điều hành cũ như IE trên Window XP có thể truy cập được website của bạn – dĩ nhiên con số đó nhỏ đến nỗi bạn không cần bỏ tiền ra để mua IP tĩnh).

đồng ý với các điều khoản

Sau khi xác thực cài đặt SSL bạn có thể phải mất vài phút cho đến vài giờ mới truy cập được giao thức https (cập nhật: hiện thời gian đó rất nhanh, thường 1, 2 phút là được, bạn bật trình duyệt ẩn danh lên để kiếm tra).

Các thao tác ở trên có thể khác nhau đôi chút tùy nhà cung cấp, nhưng phần tiếp theo đây sẽ khá giống nhau.

Điều đầu tiên bạn quan sát thấy là chúng ta sẽ đồng thời truy cập được cả hai giao thức https và http. Lúc này nhiệm vụ của bạn là redirect (chuyển hướng) các đường dẫn http về https, và điều này cũng rất giống chuyển hướng từ không có www sang có www hoặc ngược lại.

Can thiệp điều này cần thông qua chỉnh sửa file .htaccess (cho những ai sử dụng Apache, LiteSpeed websercer). [Nếu những ai không thạo sửa file .htaccess, bạn có thể sử dụng plugin để chuyển hướng, kéo xuống bên dưới để xem hướng dẫn ở phần P/S]

Nếu bạn nào biết cách truy cập vào nơi chứa dữ liệu gốc của hosting thông qua công cụ như FileZilla chẳng hạn thì việc này khá đơn giản. Còn những ai không biết mà lại đang sử dụng WordPress thì có thể dùng plugin rất phổ biến như Yoast SEO (hoặc LiteSpeed cache) để chỉnh sửa file này.

Chọn SEO > Tools, rồi nhấn File editor để vào.

file htaccess

Nếu bạn nào chưa thấy File editor trong Yoast SEO thì có khả năng là do không cập nhật lên phiên bản mới nhất. Nếu đã dùng phiên bản mới nhất mà vẫn chưa có, bạn dùng công cụ khác như plugin này: https://wordpress.org/plugins/wp-htaccess-editor/ để giúp chỉnh sửa file .htaccess

Sau khi truy cập được vào phần chỉnh sửa. Trông nó sẽ giống như thế này:

chỉnh sửa file htaccess

Sau đó bạn copy đoạn code này vào:

# Start HTTPS Redirect
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Rồi nhấn Save để lưu là thành công, giờ http sẽ được redirect sang https.

Lưu ý: Nếu file .htaccess của bạn có chứa sẵn một số đoạn mã WordPress mặc định, hãy nhập đoạn code trên ở trên hoặc ở dưới đoạn code mặc định đó. Đừng bao giờ đưa đoạn code trên vào giữa hai thẻ bắt đầu và kết thúc này: # BEGIN WordPress # END WordPress. Thực hành tốt nhất là bạn để nó xuống dưới cùng của file.

Cuối cùng bạn nhớ cập nhật Google Webmaster Tools để thêm trang có https vào danh mục trang.

P/S: Bạn cũng có thể dùng plugin để chuyển hướng http sang https. Ưu điểm của plugin là bạn chỉ cần cài đặt nó rồi bật là xong, không cần phải sửa file .htaccess, vì với người không thạo kỹ thuật, sửa file .htaccess có thể có rủi ro nhất định. Plugin đó ở đây:  Force HTTPS (SSL Redirect & Fix Insecure Content). Tuy vậy tôi vẫn khoái sửa .httaccess hơn.

Thay các kết nối cũ http bằng https

Sau khi bạn cài đặt Let’s Encrypt, các bài viết trên trang của bạn khi truy cập sẽ ở dạng https, nhưng còn ít nhất 2 loại liên kết vẫn còn ở dạng http, đó là:

  • Các liên kết ảnh trong bài viết vẫn ở dạng http
  • Các liên kết nội bộ trỏ đến nhau trong bài viết cũng vẫn ở dạng http

Tất nhiên điều này không ảnh hưởng đến khả năng hiển thị hay truy cập. Ảnh của bạn dù là dạng http nó vẫn hiển thị trên trang bình thường. Các liên kết nội bộ dù là http, nhưng khi bạn click vào nó cũng sẽ được chuyển hướng sang https (bạn đã thiết lập chuyển hướng ở phần trên).

Tuy nhiên để tốt hơn cho SEO, chúng ta không muốn quá nhiều liên kết chuyển hướng trên trang. Để thực hiện nhiệm vụ sửa chữa này, bạn có thể dùng plugin có tên gọi Better Search Replace. Công cụ này sẽ càn quét trong cơ sở dữ liệu (CSDL) của website, ghi nhận những loại ký tự cũ và thay bằng ký tự mới mà bạn nhập vào.

Nhưng vì thao tác này can thiệp vào cơ sở dữ liệu nên trước tiên bạn cần backup CSDL trước, bằng plugin kiểu như Updraft Plus phòng khi bạn thao tác lỗi thì chúng ta vẫn quay lại phiên bản website gần nhất được. Đây là plugin backup có bản miễn phí khi kết hợp với Google Drive (cũng miễn phí) cho bạn tính năng backup khá mạnh mẽ. Hiện hầu hết các website của tôi đều dùng công cụ này để sao lưu dữ liệu, phòng rủi ro.

Quay lại vấn đề chính, sau khi backup bạn chuyển sang giao diện chính của Better Search Replace:

better search replace

Có 3 phần bạn cần quan tâm ở đây:

  1. Search for: nghĩa là dữ liệu cần tìm kiếm để thay thế, ở đây là trang web của bạn dưới dạng http; Replace with: nghĩa là dữ mới dùng để thay thế dữ liệu cũ, ở đây là trang web của bạn dưới dạng https;
  2. Select tables: nghĩa là bảng cơ sở dữ liệu được chọn, thông thường bảng dữ liệu bạn nên chọn trong trường hợp này là dữ liệu dành cho các bài viết, thường nó có dạng là wp_posts hoặc có một từ chen giữa như trong hình. Nếu trang web của bạn có hàng trăm bài viết, bạn sẽ thấy dung lượng của bảng dữ liệu này khá lớn so với các bảng dữ liệu còn lại, có thể lên đến vài chục MB (như của tôi là 51,44 MB). Cập nhật: thực hành tốt hơn là bạn nên chọn toàn bộ bảng, việc quét như thế sẽ không bỏ sót. Nếu nó quá chậm thì bạn nên quét thành mấy lượt;
  3. Run as dry run?: khi được tick như trong hình nghĩa là khi bạn nhấn nút Run Search/Repalce nó sẽ thực hiện thao tác tìm kiếm dữ liệu cũ nhưng chưa thay thế bằng dữ liệu mới. Ở đây nó sẽ thông báo số lượng dữ liệu cũ được tìm thấy. Sau khi bạn chắc chắn là số lượng dữ liệu này có vẻ đúng rồi thì hãy bỏ tick chọn cho trường này rồi nhấn lại nút Run Search/Repalce khi ấy dữ liệu cũ sẽ thực sự được thay bằng dữ liệu mới.
click lại lần nữa

Cuối cùng bạn truy cập vào các bài viết cũ để xem các liên kết ảnh & liên kết nội bộ đã được chuyển sang dạng https hay chưa.

Lỗi kết nối không đủ an toàn

Sau khi cài Let’s Encrypt bạn có thể thấy trang của bạn có https nhưng vẫn chưa có khóa màu xanh tiêu chuẩn mà vẫn còn icon chữ i, khi click vào bạn có thể thấy vấn đề giống như thế này:

https không an toàn

Một trong những nguyên nhân có khả năng cao là do trang của bạn có các liên kết http là ảnh hoặc các file CSS, JS. Nếu đã sửa bằng Better Search Replace rồi và đã nhận thấy các kết nối đã là https mà vẫn bị nhận cảnh báo trên thì bạn có thể dùng plugin.

Cái này qua tìm hiểu thì tôi thấy nguyên nhân là do thiết kế của giao diện, cũng trong đợt cài đặt đó thì đa số các trang của tôi sau khi cài Let’s Encrypt thì đều bị như trên, trong khi có một trang thì không bị, lúc đó cũng đã ngờ ngợ rồi.

Để khắc phục hiện tượng này bạn dùng plugin có tên SSL Insecure Content Fixer nó sẽ chỉnh sửa một số thứ để khắc phục lỗi kết nối chưa đủ an toàn. Sau khi cài xong plugin, bạn vào phần Setting (cài đặt) để thực hiện lựa chọn các cấp độ chỉnh sửa. Đầu tiên bạn chọn cái simple trước, điều này cũng giống như đi khám bệnh vậy, trước hết bạn khám các nguyên nhân đơn giản và có khả năng nhất, sau đó không phát hiện ra mới khám chữa đến các vấn đề tốn kém chi phí, còn với trường hợp này nếu bạn thử ở level cao luôn nó có thể ảnh hưởng đến hiệu suất.

Như trang Đức Anh Psy, phải sửa chỉnh đến cấp thứ tư mới lấy lại được khóa xanh:

sửa lại SSL

Kết quả:

khóa xanh SSL

Lần này khá là may vì chịu khó đào bới nguyên nhân, mới đầu tôi còn tưởng là tại Let’s Encrypt chưa hoàn thiện, đang định mua SSL giá rẻ của Comodo, tí mất tiền ngu! Vì thực ra mình chỉ cần mã hóa chứ không cần dạng EV (loại SSL có kèm theo cả tên doanh nghiệp) thì mua làm gì cho phí.

Back to Top