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.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ỏ).
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TOÀ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
Trang 2CHƯƠNG 1: TỔNG QUAN VỀ CHỨNG THƯ SỐ
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):
Trang 3• 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 sinhtrắ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áctrườ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 :
Trang 4• 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ở
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)
Trang 5• 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êncủ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êmthô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ệ
Trang 6củ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 đượccấ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
Trang 7đượ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ộngnà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 địnhcá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
Trang 8• 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ôngqua 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ậptrình C, có sẵn những phần mềm cho phép sử dụng thư viện OpenSSL trong nhiềungô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ứngthự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 điqua 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ôngtin trên Bộ môn An ninh mạng đường truyền Không một ai kể cả người sử dụnglẫ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ể
Trang 9kiểm soá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ếthợp những yếu tố sau để thiết lập được một giao dịch an toà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 kiacủ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ácthực của người sử dụng
• Mã hoá: đả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ó đượctruyền qua Internet, dữ liệu phải được mã hoá để không thể bị đọc đượcbởi những người khác ngoài người gửi và người nhận
• Toàn vẹn dữ liệu: đảm bảo thông tin không bị sai lệch và nó phải thể hiệnchí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ôngtin, xác thực và toàn vẹn dữ liệu đến người dùng SSL được tích hợp sẵn vào cácbrowser 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 443thay 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 SecureSocket Layer (SSL) đã được sử dụng rộng rãi trên World Wide Web trong việc xácthực và mã hoá thông tin giữa client và server Tổ chức IETF (Internet EngineeringTask 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ậtngữ đượ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ácgiao 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 ứngdụng khác nhau trên Internet, thì hiện nay SSL được sử dụng chính cho các giaodịch trên Web
2.2 Các phiên bản của OpenSSL
Trang 10Cá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êntấ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ênbản của Microsoft Window.
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ảnhồ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ấtlớ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ệutrên Internet Thông qua các cổng giao tiếp riêng biệt, cấu hình máy chủ web đượcthiế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ênInternet
Trang 11Xâ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ạnglướ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ý
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ềngiố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ưutrữ trên một HTTP server Một HTTP server là một phần mềm có thể hiểu được cácURL 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
Trang 12Vớ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
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áchhàng thông qua các máy tính cá nhân trên Internet qua giao thức HTTP Nộidung được chia sẻ từ máy chủ web là những nội dung định dạng HTML, cácthẻ style sheets, hình ảnh, những đoạn mã script hỗ trợ nội dung văn bảnthôi Bạn có thể hiểu đơn giản là khi bạn truy cập vào Bizfly.vn, máychủ sẽ cung cấp đến cho bạn tất cả dữ liệu về trang web đó thông qua lệnhgiao 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ặchosting
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ộidung 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
Trang 13duyệ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ếmfile đượ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 hayxem 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àiliệ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à:
• Luôn 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ộtphầ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