Hướng Dẫn Đăng Ký và Sử Dụng Chứng Chỉ Ký Mã của ServBay
Tổng Quan
Trong quá trình phát triển và phân phối phần mềm, ký mã số là bước then chốt để đảm bảo sự tin tưởng của người dùng cùng với tính toàn vẹn của phần mềm. Thông qua việc gắn chữ ký số, nhà phát triển có thể xác minh nguồn gốc phần mềm và đảm bảo mã nguồn không bị chỉnh sửa kể từ thời điểm được ký.
ServBay cung cấp chức năng tiện lợi cho phép các nhà phát triển tự đăng ký và sử dụng chứng chỉ ký mã do CA nội bộ ServBay phát hành ngay trong môi trường phát triển của mình. Những chứng chỉ này đặc biệt phù hợp để:
- Ký phần mềm trong giai đoạn phát triển hoặc thử nghiệm tại máy cá nhân, mô phỏng quy trình ký thật.
- Ký các script, tool hoặc ứng dụng sử dụng nội bộ, nhằm xác thực nguồn gốc và đảm bảo tính toàn vẹn trong nhóm hoặc môi trường tin cậy.
- Học tập và luyện tập toàn bộ quy trình ký mã mà không cần mua chứng chỉ ký mã thương mại đắt đỏ.
Lưu ý quan trọng: Chứng chỉ ký mã được phát hành bởi CA nội bộ ServBay không phải là chứng chỉ do tổ chức phát hành chứng chỉ công cộng đáng tin cậy (như Let's Encrypt, Comodo, v.v...) cấp. Do đó, hệ điều hành và trình duyệt sẽ không mặc định tin cậy những chứng chỉ này. Vì vậy, chúng không thích hợp cho các trường hợp yêu cầu mức độ tin cậy công cộng, ví dụ như phát hành phần mềm thương mại cho người dùng cuối, gửi ứng dụng lên App Store hoặc vượt qua kiểm tra bảo mật của hệ điều hành (ví dụ cảnh báo Unknown Developer của macOS Gatekeeper). Chúng chỉ nên sử dụng cho phát triển, thử nghiệm hoặc môi trường kiểm soát.
Giới Thiệu Về Chứng Chỉ Ký Mã
Chứng chỉ ký mã là dạng chứng chỉ số kỹ thuật số, sử dụng để ký các file thực thi, script, thư viện,... Mục đích chính của chứng chỉ là xây dựng lòng tin và đảm bảo an ninh như sau:
- Xác thực danh tính nhà phát hành phần mềm: Chứng chỉ chứa thông tin của tác giả/phát hành, giúp chứng minh phần mềm đến từ đúng cá nhân hoặc tổ chức đã đăng ký trong chứng chỉ.
- Đảm bảo toàn vẹn mã: Quá trình ký sẽ tạo ra một giá trị băm (hash) dựa trên nội dung mã, được mã hóa bằng khóa riêng. Khi xác thực, hệ thống sẽ kiểm tra lại giá trị băm; bất kỳ chỉnh sửa nào đối với mã đều khiến giá trị băm không khớp, khiến quá trình xác thực thất bại và thông báo mã đã bị thay đổi.
- Nâng cao uy tín đối với người dùng: Hệ điều hành hay phần mềm bảo mật thường sẽ cảnh báo nếu bạn cài đặt/tải về phần mềm chưa ký hoặc từ nguồn không xác định. Sử dụng chứng chỉ ký mã có thể loại bỏ cảnh báo này (trong môi trường bổ sung CA tin cậy hoặc khi CA của ServBay đã được thêm vào hệ thống tin cậy), giúp tăng sự tin tưởng khi cài đặt/phát hành phần mềm.
- Hạn chế sự lan truyền phần mềm độc hại: Ký mã giúp người dùng dễ dàng phân biệt giữa phần mềm chính thống và mã độc giả mạo, hỗ trợ bảo vệ khỏi các mối nguy từ phần mềm độc hại.
Đăng Ký Chứng Chỉ Ký Mã Qua ServBay
ServBay làm cho việc xin chứng chỉ ký mã trong môi trường phát triển trở nên rất đơn giản.
Mở bảng quản lý chứng chỉ SSL: Trong ứng dụng ServBay, chọn mục "SSL Certificates" bên thanh menu trái.
Tạo mới yêu cầu cấp chứng chỉ: Trên trang quản lý chứng chỉ SSL, bấm nút "+" (Thêm mới) ở góc trên bên phải.
Điền thông tin chứng chỉ: Tại trang "Request Certificate", nhập các thông tin chính sau:
- Common Name (Tên thông thường): Nhập tên tổ chức hoặc tên cá nhân của bạn. Ví dụ:
ServBay, LLC
hoặcServBay Demo Developer
. - Usage Purpose (Mục đích sử dụng): Chọn mục đích cho chứng chỉ. Chọn
Code Signing
(Ký mã). - Request Method (Phương thức yêu cầu): Chọn cách phát hành chứng chỉ. Chọn
ServBay CA
để sử dụng tính năng CA nội bộ của ServBay. - Issuer (Nhà phát hành): Chọn CA nội bộ ServBay dùng để ký chứng chỉ này. Thông thường nên chọn
ServBay User CA
. - Algorithm (Thuật toán): Chọn thuật toán mã hóa để tạo cặp khóa. Các lựa chọn phổ biến là
ECC
(Elliptic Curve Cryptography) hoặcRSA
. ECC thường có độ bảo mật cao hơn và chiều dài khóa ngắn hơn cùng mức bảo mật. - Key Length (Độ dài khóa): Chọn đoạn dài khóa hợp với thuật toán. Với ECC, ví dụ
384
; với RSA, ví dụ2048
hoặc4096
. Khóa dài sẽ an toàn hơn nhưng thời gian xử lý có thể lâu hơn chút. - Password (Mật khẩu): Rất quan trọng! Hãy đặt mật khẩu mạnh để bảo vệ khóa riêng chứng chỉ. Bạn sẽ cần mật khẩu này khi xuất file chứng chỉ (
.p12
) và sử dụng với các công cụ ký mã. Tuyệt đối không quên mật khẩu, vì ServBay không thể khôi phục nếu bạn mất. Bạn nên chọn mật khẩu tùy ý, đủ mạnh. (Lưu ý: Mật khẩuServBay.dev
trong ảnh chỉ là ví dụ, không nên dùng làm mật khẩu thực tế, hãy chọn mật khẩu an toàn riêng cho bạn.)
Ảnh ví dụ, điền thông tin thực tế của bạn
- Common Name (Tên thông thường): Nhập tên tổ chức hoặc tên cá nhân của bạn. Ví dụ:
Gửi yêu cầu đăng ký chứng chỉ: Hoàn tất kiểm tra thông tin, bấm nút "Request" cuối trang. ServBay sẽ sử dụng ServBay User CA để tự động phát hành chứng chỉ ký mã cho bạn.
Xuất và Sử Dụng Chứng Chỉ
Sau khi nhận được chứng chỉ ký mã, bạn cần xuất chứng chỉ ra định dạng tiêu chuẩn để sử dụng với các công cụ ký mã khác nhau. Chứng chỉ do ServBay xuất thường có định dạng file .p12
.
Truy cập bảng quản lý chứng chỉ SSL: Vào mục "SSL Certificates" ở menu ServBay.
Tìm chứng chỉ ký mã của bạn: Chọn chứng chỉ vừa đăng ký, mục Usage là "Code Signing".
Bấm xuất chứng chỉ: Ở bên phải của dòng chứng chỉ, bấm biểu tượng xuất (thường là mũi tên hướng sang phải).
Chọn thư mục lưu và thiết lập mật khẩu: Trong cửa sổ xuất chứng chỉ bật lên, chọn thư mục máy tính để lưu file chứng chỉ. Dạng xuất chủ yếu là
.p12
(PKCS#12). File này chứa cả chứng chỉ ký mã và khóa riêng, nên sẽ được bảo vệ bằng mật khẩu. Bạn cần nhập đúng mật khẩu đã đặt lúc đăng ký để hoàn tất xuất file.Sử dụng chứng chỉ với công cụ ký mã số: Nhập file
.p12
vào công cụ ký mã của hệ điều hành hoặc môi trường phát triển. Mỗi hệ điều hành, công cụ sẽ có cách sử dụng khác nhau:- macOS: Sử dụng lệnh
codesign
của hệ thống. Bạn nên nhập file.p12
vào Keychain Access (Truy cập Chuỗi Khoá) của macOS trước. - Windows: Dùng công cụ
signtool.exe
từ Windows SDK. Bạn cần nhập file.p12
vào trình quản lý chứng chỉ của Windows. - Nền tảng/công cụ khác: Tùy hệ công nghệ (ví dụ: Java
jarsigner
, .NETSignTool
, Go và các tool ký mã bên thứ ba), hãy tham khảo cách nhập file và ký riêng. Đa số sẽ yêu cầu đường dẫn file.p12
và mật khẩu bảo vệ.
- macOS: Sử dụng lệnh
Sau khi nhập, bạn có thể dùng chứng chỉ để ký số cho mã nguồn, phần mềm, trình điều khiển (driver), v.v.
Ví Dụ Ký Mã Bằng Chứng Chỉ (macOS)
Ví dụ sau minh hoạ cách dùng công cụ codesign
của macOS và chứng chỉ .p12
xuất từ ServBay để ký và kiểm tra một file nhị phân đơn giản.
Giả sử bạn đã nhập thành công file .p12
vào Keychain Access của macOS và cung cấp đúng mật khẩu.
# 1. Tạo file mã nguồn C đơn giản để test ký mã
# Lưu nội dung sau thành test.c
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. Dùng gcc biên dịch file C thành file thực thi nhị phân
# -o /tmp/test đặt tên file đầu ra là /tmp/test
gcc test.c -o /tmp/test
echo "Biên dịch thành công, đã tạo /tmp/test"
# 3. Tìm chứng chỉ có thể dùng để ký mã
# -v hiển thị chi tiết
# -p codesigning lọc chứng chỉ ký mã
# Tìm "Common Name" hoặc mã hash của chứng chỉ (ví dụ 99C183BC3796067FAFBA6F232D1C3C3425DAABDA)
security find-identity -v -p codesigning
# Kết quả ví dụ:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# Hãy ghi lại mã hash hoặc Common Name của chứng chỉ ServBay ("ServBay Demo Developer")
# 4. Dùng chứng chỉ tìm được để ký mã cho file nhị phân
# -f cưỡng chế ký (nếu file đã ký thì ghi đè)
# -s xác định danh tính, có thể là mã hash/hoặc Common Name (nếu duy nhất)
# --timestamp thêm dấu thời gian (nên dùng)
# /tmp/test là đường dẫn file cần ký
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# Hoặc dùng hash:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/test đã được ký số"
# 5. Kiểm tra chữ ký
# -dvvv hiển thị thông tin rất chi tiết
codesign -dvvv /tmp/test
# Xem trường "Authority" phải hiện thông tin chứng chỉ của bạn và chuỗi CA ServBay
# Kiểm tra "Signature size" và "CDHash", xác nhận file đã được ký
# Kiểm tra trường "Timestamp"
# Kết quả đầu ra ví dụ:
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=Nov 7, 2024 at 18:26:48 (ví dụ ngày giờ)
# 6. Cố tình sửa file để kiểm tra bảo vệ toàn vẹn
# Ghi dữ liệu ngẫu nhiên vào file làm thay đổi hash
echo "abcde" >> /tmp/test
echo "/tmp/test đã bị chỉnh sửa nội dung"
# 7. Kiểm tra chữ ký lại
# Kết quả bây giờ phải báo thất bại
codesign -dvvv /tmp/test
# Ví dụ đầu ra:
# /tmp/test: code object is not signed at all
# Hoặc thông báo lỗi khác, báo rằng chữ ký không còn hợp lệ do file bị thay đổi nội dung.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Giải thích:
security find-identity
dùng để liệt kê các chứng chỉ trong Keychain phục vụ những mục đích nhất định (codesigning
). Tìm dấu nhận dạng chứng chỉ ServBay (Common Name hoặc mã hash).codesign -f -s "Your Identity"
thực hiện ký mã số. Tham số--timestamp
gắn dấu thời gian đáng tin cậy - miễn là chữ ký được xác thực trong lúc chứng chỉ còn hiệu lực và dấu thời gian hợp lệ, thì file vẫn được xem là đã ký hợp lệ, kể cả khi chứng chỉ sau đó hết hạn.codesign -dvvv
dùng kiểm tra chi tiết chữ ký: chứng chỉ, chuỗi tin cậy, đối chiếu giá trị hash (CDHash).- Bước cuối là sửa file và kiểm tra lại, chứng minh cơ chế bảo vệ toàn vẹn: bất cứ sự thay đổi nào đều khiến chữ ký mất hiệu lực.
Gia Hạn Chứng Chỉ
Chứng chỉ ký mã do ServBay cấp có thời hạn nhất định (thường là 800 ngày). Trước khi chứng chỉ hết hạn, bạn có thể gia hạn bằng cách:
- Truy cập bảng quản lý chứng chỉ SSL.
- Tìm chứng chỉ ký mã cần gia hạn.
- Bấm nút gia hạn: Chọn biểu tượng làm mới bên phải chứng chỉ (vòng mũi tên).
- Xác nhận gia hạn: Sau khi bấm, ServBay sẽ phát hành chứng chỉ mới, gắn ngày hết hạn tiếp theo là 800 ngày từ hiện tại.
Xoá Chứng Chỉ
Nếu bạn không còn cần dùng chứng chỉ, có thể xóa khỏi ServBay.
- Vào bảng quản lý chứng chỉ SSL.
- Tìm chứng chỉ cần xóa.
- Bấm nút xoá: Bấm biểu tượng thùng rác ở bên phải chứng chỉ.
- Xác nhận xoá: Trong menu xác nhận, chọn "Delete" và xác nhận lại. Chú ý, sau khi xoá chứng chỉ sẽ không thể khôi phục.
Câu Hỏi Thường Gặp (FAQ)
Hỏi: Chứng chỉ ký mã do ServBay phát hành miễn phí?
Trả lời: Đúng, chứng chỉ do CA nội bộ ServBay cấp là tính năng tích hợp miễn phí trong ServBay, bạn không cần trả bất kỳ chi phí nào.
Hỏi: Tôi có thể sử dụng chứng chỉ ServBay để ký phần mềm thương mại và phân phối ra bên ngoài không?
Trả lời: Không. Chứng chỉ do ServBay phát hành thuộc CA nội bộ, không được mặc định tin cậy bởi các hệ điều hành hay chợ phần mềm. Chúng chỉ nên dùng cho phát triển, thử nghiệm hoặc trong môi trường nội bộ kiểm soát. Muốn phân phối phần mềm ra công chúng, bạn phải mua chứng chỉ ký mã của các CA công cộng đáng tin cậy.
Hỏi: Tôi quên mật khẩu đã đặt lúc xuất file .p12
, phải làm sao?
Trả lời: ServBay không lưu mật khẩu khóa riêng của bạn. Nếu quên, bạn sẽ không thể xuất hoặc sử dụng khóa riêng đó nữa. Hãy xoá chứng chỉ và đăng ký mới.
Hỏi: Tôi có thể thêm ServBay User CA vào “store” tin cậy của hệ điều hành không?
Trả lời: Được. Thường bạn cần xuất chứng chỉ ServBay User CA và nhập thủ công vào kho tin cậy của hệ điều hành hoặc trình duyệt.
Tổng Kết
Tính năng chứng chỉ ký mã mà ServBay cung cấp giúp các nhà phát triển thuận tiện ký phần mềm, thử nghiệm quá trình ký và xác thực công cụ nội bộ trong môi trường phát triển cục bộ. Qua hướng dẫn này, bạn đã nắm được quy trình đăng ký, xuất và sử dụng chứng chỉ trong ServBay. Lưu ý, đây là chứng chỉ phục vụ mục đích phát triển, kiểm thử, không nên dùng cho môi trường yêu cầu tin cậy công khai.
Nếu bạn gặp vướng mắc trong quá trình đăng ký hay sử dụng, hãy tra cứu tài liệu chính thức của ServBay hoặc tìm hỗ trợ từ cộng đồng.