Professional Documents
Culture Documents
(123doc) - Tim-Hieu-Va-Thuc-Hanh-Tao-Chung-Thu-So-Bang-Openssl-Cho-Webserver-Apache
(123doc) - Tim-Hieu-Va-Thuc-Hanh-Tao-Chung-Thu-So-Bang-Openssl-Cho-Webserver-Apache
(123doc) - Tim-Hieu-Va-Thuc-Hanh-Tao-Chung-Thu-So-Bang-Openssl-Cho-Webserver-Apache
Hà Nội 2020
CHƯƠNG 1: TỔNG QUAN VỀ CHỨNG THƯ SỐ
1.1.Khái niệm
Chứng thư số là một phương tiện thông qua nó tổ chức chứng thực chứng nhận
một cặp khóa thuộc về một chủ thể.
Chứng thư số được CA ký số, nên chúng tự bảo vệ đối với tính toàn vẹn và chỉ
chứa những thông tin công khai nên có thể được phát tán một cách tự do.
Chứng thư số chứa (gắn kết) tên thuê bao và khóa công khai, nó giải quyết được
hai vấn đề của mật mã khóa công khai khi áp dụng vào thực tiễn (xác thực cặp
khóa, chống chối bỏ).
1.2.Phân loại
Căn cứ vào đối tượng của chứng thư số có thể phân loại chứng thư số thực thể cuối
và chứng thư số CA.
• Chứng thư số thực thể cuối: là loại chứng thư số do một CA phát hành cho thực
thể cuối. Chứng thư thực thể cuối này không dùng để phát hành chứng thư khác.
• Chứng thư số CA: là chứng thư số do một CA phát hành cho một CA được phân
biệt bởi trường Basic constraint. Chứng thư số CA này có thể dùng để phát hành
chứng thư khác. Chứng thư số CA có thể là:
Chứng thư số tự phát hành: là một loại chứng thư số đặc biệt trong đó chủ
thể phát hành (issuer) và chủ thể sở hữu (subject) là một (giống nhau). Loại chứng
thư số này được tạo ra cho những mục đích đặc biệt như kiểm tra hợp lệ cặp khóa
mới khi khóa của CA hết hạn.
– Chứng thư số tự ký - chứng thư số của RootCA: là một loại chứng thư số
tự phát hành. Trong đó khóa riêng ký chứng thư số tương ứng với khóa công khai
trong chứng thư số.
– Chứng thư số chéo: là một loại chứng thư số mà chủ thể phát hành và chủ
thể sở hữu là các CA khác nhau. Chứng thư số chéo dùng để xây dựng mối quan hệ
tin cậy giữa các CA.
Căn cứ vào mục đích sử dụng, chứng thư số còn có thể được phân thành chứng thư
số khóa công khai, chứng thư số đủ điều kiện, và chứng thư số thuộc tính, CVC.
• Chứng thư số khóa công khai (Public Key Certificate):
• Chứng thư số thuộc tính (Attribute Certificate): chứng thư số chứa các thông tin
như: thành viên nhóm, vai trò-role, mức an toàn ... và các thông tin về sự cho phép
kết hợp với thông tin về chủ sở hữu chứng thư. Chứng thư số thuộc tính không
chứa khóa công khai và dùng để cấp phép thực hiện hành vi đối với mỗi chủ thể
(Authorization).
• Chứng thư số đủ điều kiện (Qualified Certificate): là một loại chứng thư số được
dùng để xác định một người với mức an toàn nhất định. Chứng thư số đủ điều kiện
thường gồm các thông tin xác định chủ thể như, họ tên, ngày sinh, ,.. thông tin sinh
trắc (ảnh, vân tay..)
• Card Verifiable Certificates (CVC): được thiết kế để có thể xử lý bởi các thiết bị
có khả năng tính toán hạn chế như thẻ thông minh. Sử dụng cấu trúc (TLV) với các
trường cố định. (mỗi trường trong chứng chỉ có độ dài cố định hoặc tối đa và mỗi
trường theo thứ tự được xác định rõ).
1.3.Các chuẩn về chứng thư số
- Chứng thư số X.509 ( thường được sử dụng nhiều nhất)
- Chứng thư số SPKI (Simple Public Key Infrastructure)
- Chứng thư số PGP (Pretty Good Privacy)
- Chứng thư số SET (Secure Electronic Transaction)
- PKCS #6.
3.1. Chứng thư số X.509
-Chuẩn X.509 định nghĩa cấu trúc (các trường chuẩn và mở rộng) của chứng thư số
và CRL cho nhiều mục đích khác nhau. PKIX định nghĩa và giới hạn một số
trường phù hợp với người dùng Internet. Các trường được phân thành các nhóm :
– Bắt buộc hỗ trợ .
– Có thể hỗ trợ .
– Có thể không hỗ trợ .
• Các trường mở rộng thuộc về một trong hai loại:
– Quan trọng (critical)
– Không quan trọng (non -critical)
• RFC 5280 Certificate and CRL profile
Cấu trúc: gồm có các nhóm: trường chuẩn,trường mở rộng chuẩn và trường mở
rộng riêng.
-Trường chuẩn:
Version: chứa một giá trị nguyên mô tả phiên bản của chứng thư số (1, 2
hoặc 3).
Serial Number: chứa một số nguyên mô tả thứ tự, duy nhất xác định chứng
thư số có độ dài 20 chữ số.
Signature: chứa định danh (OID-Object IDentification) giải thuật được sử
dụng ký số trên chứng thư. VD OID cho SHA-1 với RSA là
1.2.840.113549.1.1.5.
Issuer: xâu ký tự xác định tên của chủ thể ký và phát hành chứng thư số. Tên
được viết theo quy ước (Distinguised Name - DN). Trường này là bắt buộc
và không chứa xâu rỗng.
Validity : khoảng thời gian mà khóa công khai của chứng thư này được xem
là hợp lệ. Chứa thời gian bắt đầu hợp lệ (Not Valid Before) và thời gian hết
hợp lệ (Not Valid After)
Subject : xác định tên chủ thể sở hữu chứng thư số. Tên chủ thể sở hữu phải
khác rỗng và được viết theo quy ước tên phân biệt (Distinguised Name-
DN).
Subject Public Key Info: chứa khoá công khai của chủ thể sở hữu chứng thư
số, trường này luôn tồn tại và không rỗng. • Issuer Unique ID: chứa định
danh duy nhất của chủ thể phát hành chứng thư số. Trường này dự phòng tên
của chủ thể phát hành được sử dụng lại hoặc trùng với miền CA khác.
Subject Unique ID: chứa định danh duy nhất của chủ thể sở hữu chứng thư
số (phiên bản 2 và 3). Trường này để dự phòng khả năng tên của chủ thể sở
hữu được sử dụng lại. • Extensions: chứa các trường mở rộng cung cấp thêm
thông tin xác định chứng thư số. Mỗi trường mở rộng kết hợp với một cờ để
xác định trường này là quan trọng hoặc không
-Trường mở rộng chuẩn
Các trường mở rộng về khóa:
Authority Key Identifier: định danh duy nhất để phân biệt các khóa được sở
hữu bởi một CA do cùng một chủ thể phát hành. Trường này được sử dụng
khi CA có nhiều khóa ký. Trường này bắt buộc đưa vào tất cả các chứng thư
CA trừ những chứng thư tự ký.
Subject Key Identifier : định danh duy nhất của khoá công khai được chứa
trong chứng thư này. Định danh này phân biệt giữa các khoá áp dụng cho
cùng một chủ thể sở hữu chứng thư số. Trường này bắt buộc đưa vào chứng
thư số của CA, và các chứng thư số thực thể cuối.
Key Usage: một chuỗi bit chỉ ra mục đích sử dụng của khóa. Chuỗi bit này
xác định hoặc hạn chế các tính năng hoặc dịch vụ sử dụng khoá công khai
trong chứng thư số này. Ví dụ ký số, mã mật, trao đổi khoá, ký chứng thư,
ký CRL...
Extended Key Usage: cho phép thêm thông tin mục đích sử dụng của khóa.
Nó là một danh sách OID chỉ ra cách sử dụng cụ thể của khoá công khai
trong chứng thư số.
o VD một số OID tương ứng với mở rộng này: xác thực máy chủ TLS,
xác thực máy trạm TLS, ký mã lệnh, mã thư, dấu thời gian, ký OCSP
(Online Certificate Status Protocol). Mở rộng này thường được sử
dụng cùng với các chứng thư số của thực thể cuối.
Private Key Usage Periods (Thời hạn sử dụng khoá riêng): là khoảng thời
gian hợp lệ của khoá riêng tương ứng với khoá công khai trong chứng thư
số. Thông tin chứa trong trường này cũng giống như trường thời gian hợp lệ
của khóa công khai trong chứng thư (Not Valid Before và Not Valid After).
Trường này là cần thiết để kiểm tra chữ ký số một thời gian sau khi khóa
riêng hết hạn sử dụng. 07/11/2020 http://ca.gov.vn 17
Các trường mở rộng về chính sách:
Certificate Policies (các chính sách phát hành chứng thư): chứa một danh
sách các thông tin mô tả chính sách. Mỗi mục gồm định danh chính sách
(OID), một con trỏ (URI) trỏ tới vị trí của chính sách và các điều kiện áp
dụng cho việc sử dụng chứng thư. Nếu trường mở rộng này được đánh dấu
là quan trọng, các ứng dụng cần phải tuân thủ các điều kiện được chỉ ra
trong các chính sách, hoặc chứng thư sẽ không được sử dụng. Hai chính
sách đã được định nghĩa:
o Quy tắc phát hành chứng thư (Certification Practice Statement- CPS)
là chính sách áp dụng cho CA.
o Thông báo người sử dụng (User Notice).
Policy Mappings (các ánh xạ chính sách): được sử dụng để tạo ra một sự
tương ứng giữa các chính sách chứng thư số được định nghĩa bời thẩm
quyền chính sách (policy authority) giữa hai miền chính sách (CA) khác
nhau. Trường mở rộng này chỉ được sử dụng trong chứng thư số của CA.
Các trường mở rộng về thông tin chủ thể sở hữu và chủ thể phát hành:
Subject Alternative Name (tên khác của chủ thể sở hữu): tùy chọn một trong
tám dạng tên khác nhau dùng để xác định chủ thể sở hữu chứng thư (ví dụ,
địa chỉ e-mail, địa chỉ IP, URI,...).
Issuer Alternative Name (tên khác của chủ thể phát hành): tùy chọn một
trong tám dạng tên khác nhau dùng để xác định chủ thể phát hành chứng thư
(vd, địa chỉ e-mail, địa chỉ IP, URI...).
Subject Directory Attributes (các thuộc tính chỉ dẫn của chủ thể sở hữu):
gồm một danh sách các thuộc tính dùng để mang thêm các thuộc tính nhận
dạng của chủ thể sở hữu chứng thư. Đặc điểm của các thuộc tính này là có
thể linh hoạt thay đổi.
Các trường mở rộng ràng buộc đường dẫn chứng thực:
Basic Constraints (các ràng buộc cơ bản): trường này chứa hai trường CA và
PathLenConstraints. Nếu giá trị trường CA là true thì chứng thư số này được
cấp cho một CA và có thể ký phát hành chứng thư số khác. Nếu giá trị
trường CA là false thì đây là chứng thư số thực thể cuối. Khi trường CA
được đặt là true, trường PathLenConstraint chỉ ra "số cực đại" các chứng thư
CA tiếp theo trong đường dẫn chứng thực. Giá trị trường này bằng 0 có
nghĩa là CA chỉ có thể phát hành các chứng thư cho thực thể cuối.
Name Constraints (các ràng buộc tên): xác định không gian tên của chủ thể
sở hữu (tên khác) phải tuân theo trong các chứng thư số tiếp theo. Trường
mở rộng này chỉ tồn tại trong chứng thư số của CA. Mở rộng này cho phép
xác định các cây tên, các tên được bao gồm và tên loại trừ thông qua các
thuộc tính Permitted Subtrees và Excluded Subtrees. Các tên xác định này có
thể có dạng DN, URI, e-mail, hoặc bất kỳ dạng tên nào có thể thêm vào cấu
trúc phân cấp. Nếu tồn tại, trường mở rộng này được đánh dấu là quan trọng.
Policy Constraints (các ràng buộc chính sách): gồm hai trường
RequireExplicitPolicy và InhibitPolicyMapping.
RequireExplicitPolicy: cho phép chủ thể phát hành yêu cầu các chứng thư
số tiếp theo trong đường dẫn phải chứa các định danh chính sách chấp nhận
được. InhibitPolicyMapping: cho phép chủ thể phát hành ngăn cản hoặc
không sử dụng ánh xạ giữa các chính sách khác nhau trong các chứng thư
số tiếp theo trong đường dẫn.
Các trường mở rộng này chỉ tồn tại trong chứng thư số CA. Nếu có mở rộng
này cần phải được đánh dấu là quan trọng. • Inhibit Any Policy (cấm một
chính sách bất kỳ): trường này chỉ ra định danh của các chính sách không sử
dụng (ví dụ giá trị OID là 2.5.29.32.0). Trường mở rộng này chỉ tồn tại
trong chứng thư số CA. Mở rộng này có thể được đánh dấu là quan trọng
hoặc không.
Các trường mở rộng liện quan đến CRL
CRL Distribution Points (các điểm phân phối CRL): chứa thông tin xác
định cách lấy thông tin thu hồi chứng thư số. Nó chứa một danh sách các
điểm phân phối CRL - con trỏ (URI) chỉ tới vị trí của phân hoạch CRL nơi
chứa thông tin thu hồi của chứng thư số này. Nếu được đánh dấu là quan
trọng chứng thư số phải được kiểm tra thông tin thu hồi theo con trỏ trong
trường này.
Freshest CRL (CLR mới nhất): chứa thông tin xác định cách lấy thông tin
thu hồi delta hay còn gọi là Delta CRL Distribution Point. Cú pháp của
trường này cũng giống như CRL Distribution Points. Nếu được đánh dấu là
quan trọng chứng thư số phải được kiểm tra thông tin thu hồi theo con trỏ
trong trường này.
-Trường mở rộng riêng:
Các trường mở rộng riêng được định nghĩa để sử dụng trong trường hợp cụ thể.
Hai mở rộng riêng sử dụng cho Internet:
Authority Information Access (truy cập thông tin thẩm quyền): Trường này
chứa thông tin chỉ ra cách truy nhập thông tin và các dịch vụ được cung cấp
bởi chủ thể phát hành chứng thư số. Mỗi một mục xác định một dịch vụ. Hai
dịch vụ đã được định nghĩa gồm: – Dịch vụ kiểm tra chứng thư trực tuyến
OCSP. – Dịch vụ xác định thông tin về chủ thể phát hành chứng thư với mục
tiêu tải thông tin về CA phát hành chứng thư hiện tại. Thông tin này được sử
dụng để xây dựng đường dẫn chứng thực.
Subject Information Access (truy cập thông tin chủ thể): Trường này chứa
thông tin chỉ ra cách truy nhập thông tin và dịch vụ được cung cấp bởi chủ
thể sở hữu trong chứng thư số. Cú pháp trường mở rộng này cũng giống như
trường Authority Information Access bao gồm kiểu và vị trí của thông tin.
Hai dịch vụ đã được định nghĩa: – Với chứng thư CA, dịch vụ xác định vị trí
kho chứng thư. – Với chứng thư thực thể cuối, dịch vụ time stamp khi chủ
thể cung cấp dịch vụ time stamp
Để làm được điều này, mỗi máy chủ web server phải là một kho có dung lượng rất
lớn và có thể tải ở tốc độ rất cao để có thể lưu trữ và vận hành tốt mọi kho dữ liệu
trên Internet. Thông qua các cổng giao tiếp riêng biệt, cấu hình máy chủ web được
thiết lập giúp điều hành hiệu quả cho cả một hệ thống máy tính hoạt động trên
Internet.
Xây dựng máy chủ web server phải đảm bảo được quy trình hoạt động khắc nghiệt,
liên tục và không ngừng nghỉ để duy trì cung cấp dữ liệu thường xuyên cho mạng
lưới máy tính. Tóm lại, đây sẽ là nơi chứa toàn bộ dữ liệu hoạt động trên internet
mà nó được giao quyền quản lý.
2 phần chính quan trọng để thực hiện cấu hình máy chủ web không thể thiếu
đó là phần cứng hoặc phần mềm, đôi khi phải cả phần mềm lẫn phần cứng.
Về phía phần cứng
Máy chủ web server sẽ được kết nối với internet và truy cập bằng một tên miền
giống như mozilla.org. Đây cũng là nơi lưu trữ các file thành phần của một website
( như file ảnh, CSS, Javascript và HTML) và có thể chuyển chúng tới thiết bị
người dùng cuối cùng.
Web server sẽ bao gồm các phần để điều khiển người dùng truy cập tới các file lưu
trữ trên một HTTP server. Một HTTP server là một phần mềm có thể hiểu được
các URL và giao thức trình duyệt đang sử dụng. Bất cứ lúc nào trình duyệt cần đến
file dữ liệu trên máy chủ, trình duyệt sẽ gửi yêu cầu file đó thông qua HTTP.
Với 2 phần cứng và phần mềm này bạn hoàn toàn có thể xây dựng một web server
đơn giản hoặc cầu kỳ ứng dụng cho việc nghiên cứu, phát triển, kinh doanh.
Chức năng cơ bản của web server không thể thiếu là lưu trữ, xử lý và phân phối
nội dung website đến với khách hàng.
Xử lý dữ liệu qua giao thức HTTP: Xử lý và cung cấp thông tin cho
khách hàng thông qua các máy tính cá nhân trên Internet qua giao thức
HTTP. Nội dung được chia sẻ từ máy chủ web là những nội dung định dạng
HTML, các thẻ style sheets, hình ảnh, những đoạn mã script hỗ trợ nội dung
văn bản thôi.... Bạn có thể hiểu đơn giản là khi bạn truy cập vào Bizfly.vn,
máy chủ sẽ cung cấp đến cho bạn tất cả dữ liệu về trang web đó thông qua
lệnh giao tiếp.
Kết nối linh hoạt: Máy tính nào cũng có thể là một máy chủ nếu nó được
cài đặt một chương trình phần mềm server và có kết nối internet.
Chương trình chuyển đổi thông minh: Phần mềm web server cũng giống
như các phần mềm khác, nó cho phép người dùng cài đặt và hoạt động trên
bất kỳ máy tính nào đáp ứng đủ yêu cầu về bộ nhớ.
Lưu trữ dữ liệu trên hình thức thuê các máy chủ nhỏ, máy chủ áo VPS hoặc
hosting.
Vì thế khi thiết kế website xong, cần thực hiện đăng tải website lên web server để
giúp khách hàng có thể truy cập web ở nhiều nơi trên thế giới và hiểu được nội
dung bên trong.
Để biết được Web Server hay máy chủ web hoạt động như thế nào thì bạn có thể
hiểu như sau: Dựa trên cấu hình máy chủ, khi bạn muốn lấy một trang web, trình
duyệt của bạn sẽ gửi một yêu cầu (request) tới webserver. Lúc này, nó sẽ tìm kiếm
file được yêu cầu trên ổ đĩa mà nó lưu trữ. Khi tìm thấy file, máy chủ sẽ đọc và xử
lý (nếu cần), cuối cùng sẽ gửi nó đến trình duyệt. Để hiểu các bước cụ thể hơn hay
xem ngay ở phần bên dưới.
Dựa trên các lợi ích đó, việc lựa chọn một nhà cung cấp Web server tốt chiếm một
phần vô cùng quan trọng trong việc phát triển website của bạn.
Textual: Tất cả các lệnh đều là văn bản thuần túy và người dùng đều có thể
đọc hiểu.
Stateless: Là một ứng dụng server có nhiệm vụ cung cấp các quy tắc rõ ràng
về cách server (máy chủ) và client ( khách hàng) giao tiếp với nhau. Các quy
tắc đó cụ thể như sau:
Web server bắt buộc trả lời mọi yêu cầu HTTP và chỉ mắc ít nhất một thông
điệp lỗi.
Chỉ khách hàng tạo được các yêu cầu HTTP tới các máy chủ. Tương tự, chỉ
các máy chủ mới có thể đáp trả yêu cầu HTTP của khách hàng.
Khi yêu cầu một file qua HTTP, khách hàng phải cung cấp URL của file đó.
Static web server: Mỗi static sẽ bao gồm một Hardware kết hợp với HTTP Server.
Lúc này server máy chủ sẽ gửi những file như HTML, CSS, Javascript... tới trình
duyệt web
Dynamic web server: Bao gồm một static cùng với một Application Server ( máy
chủ ứng dụng ) và một databaser. Lúc này Application Server sẽ cập nhật những
file được lưu trữ trực tiếp trên Database và gửi tới trình duyệt web thông qua
HTTP Server.
Chính là việc máy chủ xử lý nội dung hoặc có thể tạo ra dữ liệu dựa trên database.
Giải pháp này sẽ linh hoạt hơn, nhưng đòi hỏi kỹ thuật cao hơn để xử lý cũng như
quy trình xây dựng dynamic website khá phức tạp.
4.5. Sử dụng chứng thư số cho người dùng cài đặt vào web brower
Chrome
Vào chrome > setting > safety check > security > Manage certificates >
thêm chứng thư số
Lệnh kích hoạt trang HTTPS : sudo a2ensite default-ssl.conf