CHƯƠNG 2: GIỚI THIỆU CÔNG NGHỆ WEBSPHERE MQ VÀ ỨNG DỤNG
2.3. An toàn bảo mật thông tin qua SSL với Websphere MQ và Web Service
2.3.1. Vấn đề an toàn bảo mật thông tin qua SSL với Web service
Để đảm bảo an toàn cho đường đi của dữ liệu và có thể kiểm soát được liệu có ai đó thâm nhập vào thông tin trên đường truyền khi sử dụng web service, ta có thể kết hợp web service với SSL (Secure Socket Layer)[3] để thiết lập được một giao dịch an toàn.
SSL không phải là một giao thức đơn lẻ, mà là một tập các thủ tục đã được chuẩn hoá để thực hiện các nhiệm vụ bảo mật sau:
- Xác thực server: Cho phép người sử dụng xác thực được server muốn kết nối.
- Xác thực Client: Cho phép phía server xác thực được người sử dụng muốn kết nối.
- Mã hoá kết nối: Tất cả các thông tin trao đổi giữa client và server được mã hoá trên đường truyền nhằm nâng cao khả năng bảo mật.
Giao thức SSL bao gồm 2 giao thức con: giao thức SSL record[3] và giao thức SSL handshake[3]. Giao thức SSL record xác định các định dạng dùng để truyền dữ liệu. Giao thức SSL handshake (gọi là giao thức bắt tay) sẽ sử dụng giao thức SSL record để trao đổi một số thông tin giữa server và client vào lần đầu tiên thiết lập kết nối SSL.
Giao thức SSL hỗ trợ rất nhiều các thuật toán mã hoá, được sử dụng để thực hiện các công việc trong quá trình xác thực server và client, truyền tải các chứng thực số (certificates) và thiết lập các khoá của từng phiên giao dịch (sesion key).
2.3.2 SSL và Websphere MQ
Các message channel và Message Queue Interface (MQI) channel có thể sử dụng giao thức SSL để quy định sự an toàn bảo mật mức liên kết. Websphere MQ
hỗ trợ phiên bản 3.0 của giao thức SSL và phiên bản 1.0 của giao thức TLS (Transport Layer Security)[3]. Việc ánh xạ ý tưởng của một SSL client và SSL server vào các loại channel khác nhau đã cung cấp trong Websphere MQ là rất quan trọng. Với mỗi cặp channel, bộ khởi tạo giao tiếp được hướng đến SSL client trong khi đầu cuối của channel khác trở thành SSL server.
Việc chỉ ra các thuật toán mã hóa sử dụng cho giao thức SSL được cung cấp bởi thông số mã hóa và xác thực (CipherSpec)[3] như một phần của định nghĩa channel. CipherSpec là một hàm băm và thuật toán mã hoá đặc biệt. Các CipherSpec đều được chỉ ra trên nền per-channel và sử dụng một tham số trong định nghĩa channel gọi là SSLCipherSpec (SSLCIPH)[3]. Khi một channel an toàn đã được thiết lập, cả hai đầu phải có cùng CipherSpec. Tất cả các loại channel trong Websphere MQ đều có thuộc tính SSLCIPH. Đây cũng là thuộc tính nơi CipherSpec được thiết lập.
Encryption + Hash Function=CipherSpec (thông số mã hóa và xác thực)[3]
CipherSpec + Authentication/Key Exchange=CipherSuite (bộ mật mã)[3]
Để chỉ ra nơi channel đáp ứng sẵn sàng chấp nhận các kết nối, ta sử dụng tham số SSLClientAuthentication (SSLCAUTH) trong định nghĩa channel (có thể được đặt 1 trong 2 giá trị REQUIRED hoặc OPTIONAL)[3]. Trong quá trình SSL handshake, MCA (Message Channel Agent) gửi chứng thực số của Queue manager cho các cộng sự MCA của nó tại cuối các channel khác để xác thực. Tại client cuối của MQI channel, mã Websphere MQ client đảm nhiệm việc gửi chứng thực số, cùng với vai trò trình cung cấp dịch vụ an toàn bảo mật. Trong trường hợp này, mã Websphere MQ client đóng vai trò user của ứng dụng client. Các Queue manager và các user Websphere MQ client không cần các chứng thực số cá nhân kết hợp với chúng khi chúng đóng vai trò SSL client, trừ khi SSLCAUTH được chỉ rõ tại phía server của channel[3].
SSL có thể cho phép nhiều CipherSpecs được chuyển qua một client trong quá trình SSL handshake và server sẽ chọn một trong số những cái mà nó hỗ trợ.
WebSphere MQ sẽ áp đặt hạn chế rằng chỉ một CipherSpec có thể được cung cấp trong định nghĩa channel và nó phải phù hợp với cả hai đầu[3].
Để sử dụng SSL cần phải có một giấy chứng thực cho mỗi bên khi muốn kết nối một cách an toàn. Đối với WebSphere MQ, điều này có nghĩa là cần một giấy chứng thực cho mỗi queue manager khi sử dụng MCA channel và mỗi giấy chứng thực cho một mã người sử dụng (user ID) truy cập vào hệ thống khi sử dụng MQI channel[3]. Các chứng thực số sẽ sử dụng trong WebSphere MQ được lưu trữ trong một key repository, được biết đến như một key database[3]. File repository có phần mở rộng là „.kdb‟. Tất cả các chứng thực, kể cả user và CA, đều được lưu trữ trong database này. Database được sử dụng bởi queue manager để quyết định
cái gì cho phép SSL bảo mật kết nối tới. Thuộc tính queue manager SSLKeyRepository[3] giữ vị trí của database trong file hệ thống không có phần mở rộng kdb, nó chỉ ra vị trí của repository giữ chứng thực số của queue manager.
Các WebSphere MQ client cũng sử dụng SSLKeyRepository của chúng như một kho chứng thực số để quyết định queue manager server nào chúng tin cậy để giao tiếp một cách an toàn.
SSL được sử dụng trong Websphere MQ để xác thực từ Queue manager đến Queue manager và mã hóa mức liên kết, tức thông điệp được mã hóa khi chúng được chuyển qua mạng nhưng không được mã hóa khi lưu trữ trong queue. Nếu sự thiết lập chế độ an toàn đủ để bảo vệ các queue thì có thể chỉ cần yêu cầu thêm sự an toàn mức liên kết. Nếu hệ thống đã sẵn sàng xác thực các ứng dụng và mã hoá các message vào lúc MQPUT và giải mã chúng vào lúc MQGET thì các message đã được mã hoá ngay khi chúng còn lưu trữ trong queue, chúng có thể không cần mã hoá thêm khi được truyền qua mạng. Trong hoàn cảnh này, an toàn mức liên kết là không cần đến, hoặc chỉ cần đến cho xác thực queue manager đến queue manager ở mức nhỏ nhất.[3]
Để thiết đặt các message channel bảo mật và các MQI channel bảo mật có thể tiến hành qua các bước sau:
- Tạo key repository
- Tạo các chứng thực cho WebSphere MQ queue manager và client - Bổ sung các chứng thực số vào key repository
- Chỉ rõ các thuộc tính SSL trong URI (Universal Resource Indicator) khi sử dụng WebSphere MQ truyền tải qua SOAP.
Cấu hình SSL cho WebSphere MQ truyền tải qua SOAP được cung cấp thông qua một số lựa chọn trong URI, các lựa chọn này phụ thuộc vào môi trường sử dụng chúng. Trong môi trường .NET, các lựa chọn sau được chỉ ra cho cấu hình SSL:
sslKeyRepository: Đây là lựa chọn chỉ ra vị trí của file SSL key repository (file .kdb)
sslCipherSpec: Lựa chọn này có thể nhận giá trị bất kỳ được chỉ ra trong giá trị SSLCIPH trong bất kỳ channel nào.
Công cụ được sử dụng để biểu thị key repository và quản lý chứng thực là IBM Global Kit (GSKit) được cung cấp cùng với bộ cài của WebSphere MQ.[3]