Apache 2.0 với giao thức
SSL/TLS: Hướng dẫn
từng bước
PHẦN I: Tổng quát
Trong hơn mười năm, giao thức SSL đã được sử dụng rộng rãi
nhằm vào mục đích đảm bảo an toàn cho các giao dịch web qua
internet. Bạn có thể tưởng tượng mỗi ngày có hàng triệu, hàng tỉ
đô la giao dịch trên mạng dùng SSL. Tuy nhiên, sự thật giản dị là
chúng ta đã dùng SSL một cách không thực sự cần thiết. Các
thông tin được gửi qua giao thức này vẫn đảm bảo an toàn. Cách
mã hoá yếu, không kiểm chứng được các certificate (chứng chỉ)
của web servers (trên máy chủ), những lỗ hổng an ninh, cùng
nhiều kiểu tấn công khác có thể cho phép những kẻ xâm nhập
truy cập thông tin nhạy cảm, bất chấp sự thật rằng nó đang được
gửi qua SSL.
Bài báo này bắt đầu cho loạt bài giới thiệu về cấu hình của
Apache 2.0 có hỗ trợ giao thức SSL/TLS, nhằm bảo đảm an ninh
tối đa và sự thực thi tối ưu trong hoạt động truyền tải của SSL.
-
Ph
ần I
: Giới thiệu về các khía cạnh của khoá (key) trong
SSL/TLS và hướng dẫn cách cài đặt, thiết lập cấu hình của 2.0 có
hỗ trợ các giao thức này.
- Phần II: Thảo luận về cấu hình của mod_ssl và các nguồn cung
cấp địa chỉ với bộ xác nhận web server.
SSL sự cải tiến mạnh mẽ so với các giao thức khác như IPSec (IP
Security Protocol). Vì giao thức này đòi hỏi nhân hệ điều hành
phải hỗ trợ và chỉnh sửa ngăn xếp TCP/IP. SSL cũng có thể dễ
dàng vượt qua tường lửa và proxy, cũng như NAT (Network
Address Translation) mà không cần nguồn cung cấp.
SSL hoạt động như thế nào? Biểu đồ dưới đây sẽ chỉ ra một
cách đơn giản với từng bước quá trình thiết lập kết nối SSL giữa
máy khách (client – dùng một đường dẫn web browser) và máy
chủ (server – dùng một SSL web server)
Biểu đồ 2. Từng bước thành lập một kết nối SSL
Như bạn thấy trên hình, quá trình thiết lập kết nối SSL bắt đầu
bằng việc trao đổi các tham số mã hoá và sau đó xác nhận các
server một cách tuỳ ý (dùng gia thức SSL Handshake). Nếu “bắt
tay” (Handshake) thành công, cả hai chiều đều chấp nhận bộ mã
hoá chung và các khoá mã hoá, thì dữ liệu ở tầng ứng dụng
(thông thường dùng HTTP, nhưng cũng có thể là một giao thức
khác) có thể được gửi thông qua đường hầm (tunnel) mã hoá
(dùngSSL Record Layer).
Trong thực tế, tiến trình trên còn phức tạp hơn một chút. Để tránh
những cái “bắt tay” không cần thiết, một số tham số mã hoá được
giữ lại. Các thông báo được gửi đi. Bộ mã hoá cũng có thể được
thay đổi. Tuy nhiên, bất chấp các đặc điểm kĩ thuật đó, cách thức
phổ biến nhất của tiến trình này làm việc thực sự như trên.
SSL, PCT, TLS và WTLS (nhưng không có SSH)
Mặc dù SSL là giao thức được biết đến nhiều nhất và phổ biến
SSL v3.0 giải quyết hầu hết các vấn đề của SSL v2.0 và kết hợp
rất nhiều thành phần của PCT. Nhanh chóng sau đó nó trở thành
giao thức phổ biến nhất cho an toàn truyền thông trên World
Wide Web.
TLS v1.0 (được biết đến như là SSL v3.1)
Được đưa ra bởi IETF vào năm 1999 (RFC 2246). Giao thức này
dựa trên SSL v3.0 và PCT. Nó cân bằng cả hai cách thức của
Netscape và Microsoft. Cũng cần chú ý rằng, mặc dù TLS dựa
trên SSL, nhưng nó không phải là phiên bản sau tương thích
100% với các bản trước nó. IETF đã thực hiện môt số cải tiến về
an toàn. Chẳng hạn như dùng HMAC thay vì MAC, dùng phép
tính toán khác trong bảo mật của máy chủ và tài liệu khoá (key),
thêm các bộ chỉnh sửa, không hỗ trợ bộ mã hoá Fortezza , v.v…
Kết quả của những nâng cấp này là các giao thức không hoạt
động được một cách đầy đủ. Cuối cùng TLS cũng rơi vào lãng
quên so với SSL v3.0.
WTLS
Phiên bản “di động và không dây” của giao thức TLS, sử dụng
giao thức UDP như là một hãng truyền thông. WTLS được thiết
kế và tối ưu cho các băng thông thấp hơn, các tiến trình nhỏ hơn
với các thiết bị di động cho phép dùng WAP. WTLS đưa ra cùng
giao thức WAP 1.1 bởi WAP Forum. Tuy nhiên, sau khi giao
thức WAP 2.0 được giới thiệu, WTLS bị thay thế bởi một phiên
bản nguyên trạng của TLS với mức an toàn cao hơn. Nó không
cần phải giải mã hay mã hoá lại lưu lượng tại cổng vào của
WAP.
này, chúng ta sẽ được biết cách cấu
hình Apache 2.0 có hỗ trợ
SSL/TLS, dùng mô hình mod_ssl. Trước khi đi xa hơn, bạn đọc
nên download mã nguồn của phiên bản mới nhất Apache 2.0
từ website của Apache. Hầu hết các ví dụ cũng làm trong Apache
1.3.x. Trong trường hợp này mod_ssl cần được download riêng rẽ
từ mã nguồn của Apache trên websitemod_ssl.
Các ví dụ cụ thể trong bài này hầu hết làm trên các hệ điều hành
Linux, giống Linux và BSD – hệ thống điều hành cơ bản. Đòi
hỏi duy nhất cho hệ điều hành là phải có cả thư
viện OpenSSL và GCC.
Là một web browser mặc định, MS Internet Explorer đã được
chọn cho bài thử nghiệm của chúng ta chủ yếu bởi vì sự quá phổ
biến của nó. Tuy nhiên, bất kì một web brower hiện đại nào khác
cũng có thể được dùng
nhưFireFox, Mozilla, Netscape, Safari, Opera…
Cài đặt Apache hỗ trợ SSL/TLS
Bước đầu tiên để cài đặt phần mềm Apache có hỗ trợ SSL/TLS là
cấu hình và cài đặt Apache 2 web server, tạo ra một người dùng
và một nhóm được đặt tên là “apache”. Một cách cài đặt an toàn
đã được xuất bản trên SecurityFocus, trong bài báo Security
Apache 2.0: Step-by-Step. Chỉ có một điểm khác nhau duy nhất
là tiến trình để thiết lập mod_ssl và mod_setenvif. Nó đòi hỏi
phải tương thích với một số phiên bản của Internet Explorer như
sau (thay đổi được chỉ ra trong phần in đậm):
./configure \