HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TỒN THƠNG TIN
Mơn: Chứng thực điện tử
ĐỀ TÀI: TÌM HIỂU VÀ THỰC HÀNH TẠO
CHỨNG THƯ SỐ BẰNG 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 tồ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 th 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 tồ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 tố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ị ngun 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 NameDN).
• Subject Public Key Info: chứa khố 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 khố 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 khố cơng khai
trong chứng thư số này. Ví dụ ký số, mã mật, trao đổi khố, 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 khố 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 khố riêng): là khoảng thời
gian hợp lệ của khoá riêng tương ứng với khố 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 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
CHƯƠNG 2: BỘ THỰ VIỆN OPENSSL
2.1.Khái niệm về OpenSSL
OpenSSL là một thư viện phần mềm cho các ứng dụng bảo mật truyền thông
qua mạng máy tính chống nghe trộm hoặc cần phải xác định phe truyền thơng ở
bên đầu kia. Nó được sử dụng rộng rãi trong các máy chủ web internet, phục vụ
phần lớn tất cả các trang web.
OpenSSL bao gồm phần mềm nguồn mở cho việc triển khai các giao thức mạng
và mã hóa khác nhau như SSL và TLS. Thư viện gốc được viết bằng ngơn ngữ lập
trình C, có sẵn những phần mềm cho phép sử dụng thư viện OpenSSL trong nhiều
ngôn ngữ, cung cấp các chức năng mật mã tổng quát để mã hóa và giải mã.
OpenSSL cũng được sử dụng từ dòng lệnh để yêu cầu, tạo và quản lý các chứng
thực số.
Việc kết nối giữa một Web browser tới bất kỳ điểm nào trên mạng Internet đi
qua rất nhiều các hệ thống độc lập mà khơng có bất kỳ sự bảo vệ nào với các thông
tin trên Bộ môn An ninh mạng đường truyền. Không một ai kể cả người sử dụng
lẫn Web server có bất kỳ sự kiểm soát nào đối với đường đi của dữ liệu hay có thể
kiểm sốt được liệu có ai đó thâm nhập vào thông tin trên đường truyền. Để bảo vệ
những thông tin mật trên mạng Internet hay bất kỳ mạng TCP/IP nào, SSL đã kết
hợp những yếu tố sau để thiết lập được một giao dịch an tồn:
• Xác thực: đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kia
của kết nối. Cũng như vậy, các trang Web cũng cần phải kiểm tra tính xác
thực của người sử dụng.
• Mã hố: đảm bảo thơng tin khơng thể bị truy cập bởi đối tượng thứ ba.
Để loại trừ việc nghe trộm những thông tin “ nhạy cảm” khi nó được
truyền qua Internet, dữ liệu phải được mã hố để khơng thể bị đọc được
bởi những người khác ngồi người gửi và người nhận.
• Tồn vẹn dữ liệu: đảm bảo thơng tin khơng bị sai lệch và nó phải thể hiện
chính xác thơng tin gốc gửi đến.
Với việc sử dụng SSL, các Web site có thể cung cấp khả năng bảo mật thơng
tin, xác thực và tồn vẹn dữ liệu đến người dùng. SSL được tích hợp sẵn vào các
browser và Web server, cho phép người sử dụng làm việc với các trang Web ở chế
độ an toàn. Khi Web browser sử dụng kết nối SSL tới server, biểu tượng ổ khóa sẽ
xuất hiện trên thanh trạng thái của cửa sổ browser và dòng “http” trong hộp nhập
địa chỉ URL sẽ đổi thành “https”. Một phiên giao dịch HTTPS sử dụng cổng 443
thay vì sử dụng cổng 80 như dùng cho HTTP.
Giao thức SSL: Được phát triển bởi Netscape, ngày nay giao thức Secure
Socket Layer (SSL) đã được sử dụng rộng rãi trên World Wide Web trong việc xác
thực và mã hố thơng tin giữa client và server. Tổ chức IETF (Internet Engineering
Task Force ) đã chuẩn hoá SSL và đặt lại tên là TLS (Transport Layer Security).
Mặc dù là có sự thay đổi về tên nhưng TSL chỉ là một phiên bản mới của SSL.
Phiên bản TSL 1.0 tương đương với phiên bản SSL 3.1. Tuy nhiên SSL là thuật
ngữ được sử dụng rộng rãi hơn.
SSL được thiết kế như là một giao thức riêng cho vấn đề bảo mật có thể hỗ trợ
cho rất nhiều ứng dụng. Giao thức SSL hoạt động bên trên TCP/IP và bên dưới các
giao thức ứng dụng tầng cao hơn như là HTTP (Hyper Text Transport Protocol),
IMAP ( Internet Messaging Access Protocol) và FTP (File Transport Protocol).
Trong khi SSL có thể sử dụng để hỗ trợ các giao dịch an toàn cho rất nhiều ứng
dụng khác nhau trên Internet, thì hiện nay SSL được sử dụng chính cho các giao
dịch trên Web.
2.2. Các phiên bản của OpenSSL
Các thư viện của OpenSSL được viết băng ngôn ngữ lập trình C,nó hoạt động trên
tất cả các nền tảng lớn, bao gồm tất cả các hệ điều hành Unix và tất cả các phiên
bản của Microsoft Window.
Gồm các phiên bản phát hành chính:
- Phiên bản : 09.x Phát hành năm 1998 – 2005
- Phiên bản : 1.0.0 Được phát hành năm 2010
- Phiên bản : 1.0.1 Phát hành năm 2012
- Phiên bản : 1.0.2Phát hành năm 2015
- Phiên bản : 1.1.0 Phát hành năm 2016
- Phiên bản : 1.1.1 Phát hành năm 2018
CHƯƠNG 3: TÌM HIỂU VỀ WEB SERVER
3.1 Khái niệm
Web server được biết đến là máy chủ web được dùng để xử lý các request từ
trình duyệt web máy khách và gửi thông tin đến client thông qua giao thức HTTP
hoặc những giao thức khác. Có nhiều webserver phổ biến thường được sử dụng
hiện nay như: Apache, Nginx, IIS...
Những chương trình trên web server được cài đặt nhằm phục vụ ứng dụng web.
Khi được tiếp nhận các request từ trình duyệt, webserver ngay lập tức sẽ gửi phản
hồi đến client thông qua giao thức HTTP hoặc những giao thức khác.
Để 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 tồn bộ dữ liệu hoạt động trên internet
mà nó được giao quyền quản lý.
3.2. Thành phần chính quan trọng của web server
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.
• Về phía phần mềm
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 tồ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.
3.3.Chức năng cơ bản của web server
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.
3.4.Cách thức hoạt động của web server
Để 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 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.
Mô hình hoạt động của web server
Lưu trữ các file (Hosting files)
Phần mềm Web server chính là nơi lưu trữ các file của website, bao gồm các tài
liệu html, ảnh, file CSS, file Javascript, fonts và videos. Người dùng có thể lưu trữ
các file trên máy tính cá nhân nhưng nó sẽ có nhiều lợi ích khi chúng ta lưu trữ
chúng trên một máy chủ riêng biệt. Các lợi ích đó là:
•
Ln sẵn sàng tải lên và hoạt động
•
Kết nối mạng internet 24/24
•
Sở hữu một địa chỉ IP cố định
•
Được bảo dưỡng từ nhà cung cấp
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.
Giao tiếp thông qua HTTP
HTTP là gì? HTTP (Hypertext Transfer Protocol) - giao thức truyền phát siêu văn
bản, một giao thức sẽ là tập hợp các quy tắc để kết nối giữa hai máy tính. Cụ thể
HTTP là một giao thức Textual và Stateless.
•
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 đó.
Nội dung static vs dynamic
Một webserver có thể xử lý các nội dung static hoặc nội dung dynamic.
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.
CHƯƠNG 4: THỰC NGIỆM
4.1.Cài đặt apache2
sudo apt-get install apache2
apache2 –v
- root@myubuntuserver:/var/www/html# nano index.html
- Truy cập vào đường dẫn http://192.168.138.128 tại máy windows10
4.2 Tạo chứng thư số
4.2.1 Tạo Rootca
• mkdir –p ~/ca/root: tạo file root nằm trong ca
• cd ~/ca/root: vào trong thư mục root
• openssl genrsa –aes256 –out rootca.key 2048: tạo khóa riêng
rootca.key 2048bit sử dụng mã khóa đối xứng aes 256bit
• openssl req –sha256 –new –x509 –days 1826 –key rootca.key –out
rootca.crt: tạo chứng thư rootca.crt thơng qua khóa riêng rootca.key
bằng openssl sử dụng mã khóa cơng khai sha256bit với tiêu chuẩn
x509 trong 1826 ngày có hiệu lực
• điền thơng tin chứng thư, quan trọng nhất là common name là
root.ca.local hoặc tên địa chỉ ip máy webserver
• touch certindex: tạo file certindex
• echo 1000 > certserial
• echo 1000> crlnumber
=> cấu hình mỗi chứng chỉ có số seri bắt đầu từ 1000
• vim ca.conf: chỉnh sửa file ca.conffile này yêu cầu xác thực chứng thư
• openssl genrsa –out subca1.key 2048: tạo khóa riêng subca1 2048 bit
• openssl req –sha256 –new –key subca1.key –out subca1.csr: tạo mới
subca1.csr thơng qua key subca1.key với mã khóa cơng khai là sha256
• cấu hình chứng thư số, quan trọng nhất là common name là sub.ca.local hoặc
IP máy webserver
• openssl ca –batch –config ca.conf –notext –in subca1.csr –out subca1.crt: tạo
thông tin chứng thư, nó sẽ hiển thị ra thơng tin chứng thư mà mình cấu hình
bên trên
• openssl ca –config ca.conf –gencrl –keyfile rootca.key –cert rootca.crt –out
rootca.crl.pem:
• openssl crl –inform PEM –in rootca.crl.pem –outform DER –out rootca.crl:
=> tạo crl cả trong pem và der
4.2.2 Tạo subca
• mkdir ~/ca/subca1 : tạo file subca1
• cd ~/ca/root/subca1
• cp ~/ca/root/subca1.key ./: copy file subca1.key từ root vào subca1
• cp ~/ca/root/subca1.crt ./: copy file subca1.crt từ root vào subca1
• touch certindex: tạo file certindex
• echo 1000 > certserial
• echo 1000> crlnumber
• nano ca.conf: thêm file bên ngoài vào ca.conf tương tự rootca
• openssl ca –config ca.conf –gencrl –keyfile subca1.key –cert subca1.crt –out
subca1.crl.pem
• openssl crl –inform PEM –in subca1.crl.pem –outform DER –out subca1.crl
=> tạo crl cả trong pem và der
4.2.3 Tạo enduser
• mkdir enduser: Tạo enuser trong subca1
• openssl genrsa -out enduser/enduser-example.com.key 2048: Tạo
khóa riêng enduser-example.com.key
• openssl req –new –sha256 –key enduser/enduser-example.com.key –out
enduser/enduser-example.com.csr: tạo chứng thư enduser-example.com.crt
thơng qua khóa khóa riêng enduser.com.key
• Thêm thông tin chứng thư số, quan trọng nhất là common name
:enduser.local
• openssl ca –batch –config ca.conf –notext –in enduser/enduserexample.com.csr –out enduser/enduser-example.com.crt: tạo thông tin chứng
thư, show thông tin chứng thư số
• openssl ca -config ca.conf -gencrl -keyfile subca1.key -cert subca1.crt -out
subca1.crl.pem
• openssl crl -inform PEM -in subca1.crl.pem -outform DER -out subca1.crl
=> tạo crl cả trong pem và der
• cat ../root/rootca.crt subca1.crt > enduser/enduser-example.com.chain
=> Tạo tệp chuỗi chứng chỉ bằng cách nối chứng chỉ Gốc và chứng chỉ trung
gian 1 với nhau.
• cat ../root/rootca.crt subca1.crt subca1.crl.pem > enduser/enduserexample.com.crl.chain
=> xác nhận dựa trên CRL. Trước tiên, hãy ghép PEM CRL và chuỗi lại với
nhau
• openssl verify -crl_check -CAfile enduser/enduser-example.com.crl.chain
enduser/enduser-example.com.crt
=> Xác minh chứng chỉ
4.2.4 Tạo file .p12
Xuất file có tên nhom13.p12 với key là rootca.key, chứng thư rootca.crt và
thêm chứng thư subca1, enduser-example.com.crt vào trong file nhom13.p12
4.3 Cài đặt chứng thư rootca.crt, subca.crt, enduser-example.com.crt
4.4 Cài
cấu
chứng thư số cho webserver apache2
• sudo a2enmod ssl: kích hoạt chế độ ssl trong apache2
đặt và
hình
• sudo mkdir /etc/apache2/ssl: tạo một thư mục chứa key
• sudo nano /etc/apache2/sites-available/default-ssl.conf: cấu hình apache2 để
sử dụng ssl
• default-ssl.conf sử dụng HTTPS mặc định port 443
• SSLEngine on : Khai báo sử dụng SSL.
• SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem : Khai báo đường dẫn
lưu file .crt
• SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key : Khai báo
đường dẫn lưu file .key
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ố