Nếu bạn là dân công nghệ, chắc hẳn đã biết SSL là gì rồi phải không nào. SSL (Secure Socket Layer) là giao thức có tác dụng để tăng tính bảo mật trong việc truyền dữ liệu giữa client và server. SSL được dùng nhiều cho các trang web có giao dịch trực tuyến sử dụng các loại thẻ thanh toán để tránh các rủi ro như bị lấy mất thông tin trong quá trình thanh toán. Sử dụng SSL còn giúp trang web của bạn thân thiện với bộ máy tìm kiếm google từ đó giúp cải thiện thứ tự xếp hạng website của bạn. Hiện nay, nhiều tính năng yêu cầu trang web của bạn phải có SSL, hoặc có tính năng sẽ không hoạt động nếu website của bạn không có SSL. Vì vậy việc cài đặt SSL cho môi trường làm việc của developer là cần thiết. Trong bài viết này, tôi sẽ hướng dẫn cài đặt https trên webserver một cách đơn giản, dễ hiểu nhất.
1. Tự động tạo certificate với mkcert
Đã có tài liệu cài đặt đầy đủ trên github, các bạn có thể vào đây để tham khảo thêm nhé .
- Với Ubuntu/Debian:
1
2
3
4
5
sudo
apt
install
libnss3
–
tools
sudo
apt
install
linuxbrew
–
wrapper
//Chạy câu lệnh này để cài đặt linux brew nếu bạn chưa cài đặt nó.
brew
install
mkcert
Hoặc :
1
2
3
4
5
6
7
sudo
apt
install
wget
libnss3
–
tools
export
VER
=
“v1.3.0”
sudo
wget
–
O
mkcert
https
:
//github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64
chmod
+
x
mkcert
sudo
mv
mkcert
/
usr
/
local
/
bin
- Với Window
1
2
3
4
5
6
choco
install
mkcert
// hoặc sử dụng :
scoop
bucket
add
extras
scoop
install
mkcert
- Với MacOS
1
2
3
4
brew
install
mkcert
brew
install
nss
# if you use Firefox
hoặc MacPorts.
1
2
3
4
5
6
sudo
port
selfupdate
sudo
port
install
mkcert
sudo
port
install
nss
# if you use Firefox
2. Tạo certificate với 1 câu lệnh duy nhất
Sau khi đã cài đặt thành công mkcert, bạn cần chạy câu lệnh bên dưới để tạo certificate.
- Câu lệnh này sẽ tạo một certificate được lưu ở thư mục mà bạn cài đặt mkcert thường sẽ được đặt tại “/Users/filippo/Library/Application Support/mkcert”. Certificate này sẽ được cài đặt cho cả browser của bạn (cần khởi động lại browser để có hiệu lực).
1
2
3
mkcert
–
install
- Tạo certificate cho một hoặc nhiều tên miền mà bạn muốn. Câu lệnh bên dưới sẽ tạo certificate cho các tên miền sau: *.example.com” example.test localhost 127.0.0.1 ::1
1
2
3
mkcert
example
.
com
“*.example.com”
example
.
test
localhost
127.0.0.1
::
1
Sau khi certificate được tạo, bạn sẽ nhận được hai file rootCA.pem và rootCA-key.pem. Chúng ta sẽ sử dụng 2 file này để cài đặt https cho webserver.
3. Cài đặt https trên Apache
Sau khi đã có được certificate bước này chúng ta sẽ tiến hành cài đặt https cho website bằng cách vào file VirtualHost của bạn theo đường dẫn /etc/apache2/sites-enabled/domain.conf và thêm vào như bên dưới :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<
VirtualHost
127.0.0.1
:
443
>
ServerAdmin
admin
@
example
.
com
DocumentRoot
/
var
/
www
/
html
/
magento2
/
ServerName
magento2
.
sh
SSLEngine
on
SSLCertificateFile
“/home/chien/.local/share/mkcert/example.sh+5.pem”
SSLCertificateKeyFile
“/home/chien/.local/share/mkcert/example.sh+5-key.pem”
<
Directory
/
var
/
www
/
html
/
magento2
/
>
Options
Indexes
FollowSymLinks
MultiViews
AllowOverride
All
Order
allow
,
deny
allow
from
all
<
/
Directory
>
ErrorLog
$
{
APACHE_LOG_DIR
}
/
error
.
log
CustomLog
$
{
APACHE_LOG_DIR
}
/
access
.
log
combined
<
/
VirtualHost
>
Để biết đường dẫn của file certificate chạy câu lệnh sau :
1
2
3
mkcert
–
CAROOT
Cho phép Apache sử dụng SSL bằng cách loading SSL module:
1
2
3
4
sudo
a2enmod
ssl
sudo
a2ensite
default
–
ssl
.
conf
Reload và restart apache2 để sử dụng config vừa thay đổi :
1
2
3
4
sudo
systemctl
reload
apache2
sudo
systemctl
restart
apache
4. Cài đặt https trên nginx
Cũng tương tự như với apache bạn cũng thêm một đoạn cấu hình vào file VirtualHost như sau:
1
2
3
sudo
nano
/
etc
/
nginx
/
sites
–
enabled
/
domain
.
conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
upstream
fastcgi_backend
{
server
unix
:
/
run
/
php
/
php7
.
3
–
fpm
.
sock
;
}
server
{
server_name
magento2
.
sh
;
listen
443
;
ssl
on
;
ssl_certificate
/
home
/
chien
/
.
local
/
share
/
mkcert
/
example
.
sh
+
5.pem
;
ssl_certificate_key
/
home
/
chien
/
.
local
/
share
/
mkcert
/
example
.
sh
+
5
–
key
.
pem
;
set
$
MAGE_ROOT
/
var
/
www
/
html
/
magento2
;
set
$
MAGE_MODE
developer
;
# or production access_log /var/log/nginx/myMagentoSite.com-access.log;
error_log
/
var
/
log
/
nginx
/
magento2
.
sh
–
error
.
log
;
include
/
var
/
www
/
html
/
magento2
/
nginx
.
conf
.
sample
;
}
Sau đó restart nginx của của bạn và truy cập vào địa chỉ https://magento2.sh
1
2
3
sudo
systemctl
restart
nginx
5. Kết luận
Vừa rồi tôi vừa hướng dẫn các bạn cài đặt https cho webserver cụ thể là Nginx và Apache2. Hi vọng bài viết có thể giúp ích phần nào cho các bạn.