tìm hiểu thêm về ssl

48 292 0
tìm hiểu thêm về ssl

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tìm hiểu về SSL (Thứ Hai, 06/08/2007 - 9:44 AM) Bài viết sẽ trình bày những yếu tố mà SSL đã kết hợp để thiết lập được một giao dịch an toàn nhằm 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. 1.SSL là gì? 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 đườ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 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ết hợ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 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ã 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ó được truyền qua Internet, dữ liệu phải được mã hoá để không thể bị đọc được bở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ệ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à toà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. 2.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ã hoá 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. 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. Lúc này, phía browser sử dụng các kỹ thuật mã hoá công khai để chắc chắn rằng certificate và public ID của server là có giá trị và được cấp phát bởi một CA (certificate authority) trong danh sách các CA đáng tin cậy của client. Điều này rất quan trọng đối với người dùng. Ví dụ như khi gửi mã số credit card qua mạng thì người dùng thực sự muốn kiểm tra liệu server sẽ nhận thông tin này có đúng là server mà họ định gửi đến không. • 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. Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem certificate và public ID của server có giá trị hay không và được cấp phát bởi một CA (certificate authority) trong danh sách các CA đáng tin cậy của server không. Điều này rất quan trọng đối với các nhà cung cấp. Ví dụ như khi một ngân hàng định gửi các thông tin tài chính mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh của người nhận. • 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. Điều này rất quan trọng đối với cả hai bên khi có các giao dịch mang tính riêng tư. Ngoài ra, tất cả các dữ liệu được gửi đi trên một kết nối SSL đã được mã hoá còn được bảo vệ nhờ cơ chế tự động phát hiện các xáo trộn, thay đổi trong dữ liệu. ( đó là các thuật toán băm – hash algorithm). Giao thức SSL bao gồm 2 giao thức con: giao thức SSL record và giao thức SSL handshake. 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 SSL record protocol để 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. 3.Các thuật toán mã hoá dùng trong SSL Các thuật toán mã hoá (cryptographic algorithm hay còn gọi là cipher) là các hàm toán học được sử dụng để mã hoá và giải mã thông tin. 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 certificates và thiết lập các khoá của từng phiên giao dịch (sesion key). Client và server có thể hỗ trợ các bộ mật mã (cipher suite) khác nhau tuỳ thuộc vào nhiều yếu tố như phiên bản SSL đang dùng, chính sách của công ty về độ dài khoá mà họ cảm thấy chấp nhận được - điều này liên quan đến mức độ bảo mật của thông tin, …. Các bộ mật mã được trình bày ở phần sau sẽ đề cập đến các thuật toán sau: • DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dài khoá là 56 bit. • 3-DES (Triple-DES): là thuật toán mã hoá có độ dài khoá gấp 3 lần độ dài khoá trong mã hoá DES • DSA (Digital Signature Algorithm): là một phần trong chuẩn về xác thực số đang được được chính phủ Mỹ sử dụng. • KEA (Key Exchange Algorithm) là một thuật toán trao đổi khoá đang được chính phủ Mỹ sử dụng. • MD5 (Message Digest algorithm) được phát thiển bởi Rivest. • RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và mã hoá dữ liệu được Rivest, Shamir, and Adleman phát triển. • RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuật toán RSA. • RC2 and RC4: là các thuật toán mã hoá được phát triển bởi Rivest dùng cho RSA Data Security. • SHA-1 (Secure Hash Algorithm): là một thuật toán băm đang được chính phủ Mỹ sử dụng. Các thuật toán trao đổi khoá như KEA, RSA key exchange được sử dụng để 2 bên client và server xác lập khoá đối xứng mà họ sẽ sử dụng trong suốt phiên giao dịch SSL. Và thuật toán được sử dụng phổ biến là RSA key exchange. Các phiên bản SSL 2.0 và SSL 3.0 hỗ trợ cho hầu hết các bộ mã hoá. Người quản trị có thể tuỳ chọn bộ mã hoá sẽ dùng cho cả client và server. Khi một client và server trao đổi thông tin trong giai đoạn bắt tay (handshake), họ sẽ xác định bộ mã hoá mạnh nhất có thể và sử dụng chúng trong phiên giao dịch SSL. 4.Các bộ mã hoá sử dụng thuật toán trao đổi khoá RSA Đây là danh sách các bộ mã hoá được hỗ trợ trong SSL mà sử dụng thuật toán trao đổi khoá RSA và được liệt kê theo khả năng bảo mật từ mạnh đến yếu. Mạnh nhất • Thuật toán mã hoá 3- DES, thuật toán xác thực SHA-1 Mạnh • Thuật toán mã hoá RC4 (với độ dài khoá 128 bit), thuật toán xác thực MD5 • Thuật toán mã hoá RC2 (với độ dài khoá 128 bit), thuật toán xác thực MD5 • Thuật toán mã hoá DES (với độ dài khoá 56 bit), thuật toán xác thực SHA –1 Tương đối mạnh • Thuật toán mã hoá RC4 (với độ dài khoá 40 bit), thuật toán xác thực MD5 • Thuật toán mã hoá RC2 (với độ dài khoá 40 bit), thuật toán xác thực MD5 Yếu nhất • Không mã hoá thông tin, chi dùng thuật toán xác thực MD5 Chú ý:Khi nói các thuật toán mã hoá RC4 và RC2 có độ dài khoá mã hoá là 40 bit thì thực chất độ dài khoá vẫn là 128 bit nhưng chỉ có 40 bit được dùng để mã hoá. 5.SSL handshake Giao thức SSL sử dụng kết hợp 2 loại mã hoá đối xứng và công khai. Sử dụng mã hoá đối xứng nhanh hơn rất nhiều so với mã hoá công khai khi truyền dữ liệu, nhưng mã hoá công khai lại là giải pháp tốt nhất trong qúa trình xác thực. Một giao dịch SSL thường bắt đầu bởi quá trình “bắt tay” giữa hai bên (SSL handshake). Các bước trong quá trình “bắt tay” có thể tóm tắt như sau: 1. Client sẽ gửi cho server số phiên bản SSL đang dùng, các tham số của thuật toán mã hoá, dữ liệu được tạo ra ngẫu nhiên (đó chính là digital signature) và một số thông tin khác mà server cần để thiết lập kết nối với client. 2. Server gửi cho client số phiên bản SSL đang dùng, các tham số của thuật toán mã hoá, dữ liệu được tạo ra ngẫu nhiên và một số thông tin khác mà client cần để thiết lập kết nối với server. Ngoài ra server cũng gửi certificate của nó đến client, và yêu cầu certificate của client nếu cần. 3. Client sử dụng một số thông tin mà server gửi đến để xác thực server. Nếu như server không được xác thực thì người sử dụng sẽ được cảnh báo và kết nối không được thiết lập. Còn nếu như xác thực được server thì phía client sẽ thực hiện tiếp bước 4. 4. Sử dụng tất cả các thông tin được tạo ra trong giai đoạn bắt tay ở trên, client (cùng với sự cộng tác của server và phụ thuộc vào thuật toán được sử dụng) sẽ tạo ra premaster secret cho phiên làm việc, mã hoá bằng khoá công khai (public key) mà server gửi đến trong certificate ở bước 2, và gửi đến server. 5. Nếu server có yêu cầu xác thực client, thì phía client sẽ đánh dấu vào phần thông tin riêng chỉ liên quan đến quá trình “bắt tay” này mà hai bên đều biết. Trong trường hợp này, client sẽ gửi cả thông tin được đánh dấu và certificate của mình cùng với premaster secret đã được mã hoá tới server. 6. Server sẽ xác thực client. Trường hợp client không được xác thực, phiên làm việc sẽ bị ngắt. Còn nếu client được xác thực thành công, server sẽ sử dụng khoá bí mật (private key) để giải mã premaster secret, sau đó thực hiện một số bước để tạo ra master secret. 7. Client và server sẽ sử dụng master secret để tạo ra các session key, đó chính là các khoá đối xứng được sử dụng để mã hoá và giải mã các thông tin trong phiên làm việc và kiểm tra tính toàn vẹn dữ liệu. 8. Client sẽ gửi một lời nhắn đến server thông báo rằng các message tiếp theo sẽ được mã hoá bằng session key. Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng phía client đã kết thúc giai đoạn “bắt tay”. 9. Server cũng gửi một lời nhắn đến client thông báo rằng các message tiếp theo sẽ được mã hoá bằng session key. Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng server đã kết thúc giai đoạn “bắt tay”. 10. Lúc này giai đoạn “bắt tay” đã hoàn thành, và phiên làm việc SSL bắt đầu. Cả hai phía client và server sẽ sử dụng các session key để mã hoá và giải mã thông tin trao đổi giữa hai bên, và kiểm tra tính toàn vẹn dữ liệu 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. - Phần III (cũng là phần cuối cùng): Thảo luận các vấn đề về xác định quyền máy khách (client) và một số lỗi cấu hình điển hình của các nhà quản trị. Các lỗi này có thể giảm mức an toàn của bất kì mạng truyền thông sử dụng SSL nào. Giới thiệu về SSL Secure Sockets Layer (SSL) là giao thức được biết đến nhiều nhất về khả năng bảo mật và độ tin cậy trong giao dịch khách - chủ (client-server) trên mạng internet. Bản thân SSL được dựa trên các khái niệm khá đơn giản. Nó sắp xếp các thuật toán mã hoá và khoá giữa 2 lần gửi - nhận của một giao dịch. Sau đó thiết lập một đưòng dẫn ảo mã hoá thông qua các giao thức khác (như HTTP). SSL cũng có thể thẩm định cả hai chiều của giao dịch thông qua việc dùng các “chứng chỉ” (certificate). SSL là giao thức tầng (layered protocol), bao gồm 4 giao thức con sau: • Giao thức SSL Handshake • Giao thức SSL Change Cipher Spec • Giao thức SSL Alert • SSL Record Layer Vị trí của các giao thức trên, tương ứng với mô hình TCP/IP được minh hoạ theo biểu đồ sau: Biểu đồ 1. Các giao thức con của SSL trong mô hình TCP/IP Theo biểu đồ trên, SSL nằm trong tầng ứng dụng của giao thức TCP/IP. Do đặc điểm này, SSL có thể được dùng trong hầu hết mọi hệ điều hành hỗ trợ TCP/IP mà không cần phải chỉnh sửa nhân của hệ thống hoặc ngăn xếp TCP/IP. Điều này mang lại cho 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ùng SSL 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 nhất, nhưng nó không phải là giao thức duy nhất dùng cho mục đích an toàn và giao vận trong web. Cũng khá quan trọng để biết rằng, từ sau phát minh SSL v1.0 ra đời , có ít nhất năm giao thức khác hoặc ít hơn hoặc nhiều hơn đóng vai trò quan trọng trong an ninh truy cập World Wide Web. Cụ thể: SSL v2.0 Phiên bản này được tạo ra bởi Netscape Communications năm 1994. Mục đích chính của giao thức này là cung cấp an toàn cho các giao dịch trên World Wide Web. Thật không may, nhanh chóng sau đó người ta thấy con số yếu kém về an toàn trong phiên bản đầu của giao thức SSL này. Do đó làm cho nó kém tin cậy hơn với cách dùng mang tính chất thương mại. • Cấu trúc của MAC yếu. • Có khả năng để các nhóm bắt buộc dùng bộ mã hoá yếu • Không bảo vệ quá trình “bắt tay” • Có khả năng những kẻ tấn công dùng kiểu cắt xén (truncation attack) PCT v1.0 Được phát triển bởi Microsoft vào năm 1995. PCT (Privacy Communication Technology ) v1.0 địa chỉ hoá một số điểm yếu của SSL 2.0 và đặt ra mục tiêu là thay thế SSL. Tuy nhiên giao thức này đã không bao giờ thu được kết quả phổ biến như là SSL v3.0. SSL v3.0 Được phát hành vào năm 1996 bởi Netscape Communications. 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. Vì sao giao thức SSH lại không được dùng cho mục đích đảm bảo an ninh khi truy cập WWW? Có một vài lí do! Đầu tiên, ngay từ khi bắt đầu, TLS và SSL đã được thiết kế cho các phiên an ninh mạng (HTTP), trong khi SSH được lùi lại để thay thế cho Telnet và FTP. SSL không làm gì hơn là “bắt tay” và thiết lập các “đường hầm mã hoá” . Và tại cùng thời gian đó, SSH đưa ra cách đăng nhập giữa người - máy, truyền tải các file an toàn, hỗ trợ cho nhiều bước kiểm tra quyền (bao gồm mật khẩu, các khoá chung, Kerberos…). Mặt khác SSL/TLS dựa trên các chứng chỉ X.509v3 và PKT, các chứng chỉ này tạo nên sự phân phối và quản lí khả năng thẩm định quyền hạn dễ dàng hơn nhiều. Với những lí do này và một số lí do khác nữa làm cho SSL/TLS ngày càng phù hợp hơn an toàn truy cập WWW và các kiểu khác tương tự trong truyền thông, bao gồm SMTP, LDAP… trong khi SSH ngày càng thuận tiện cho việc quản lí các hệ thống từ xa. Nói tóm lại, mặc dù trong thực tế có nhiều giao thức “an toàn” nhưng ta chỉ nên dùng hai giao thức giao dịch web (ít nhất tại thời điểm này) là: TLS v1.0 và SSL v3.0. Cả hai đều được nhấn mạnh trong loạt bài này với cái tên đơn giản là SSL/TLS. Bởi những điểm yếu kém đã được biết đến của SSL v2.0 và “lỗ hổng WAP” nổi tiếng của WTLS, chúng ta nên tránh dùng các giao thức này, hoặc ít nhất là hạn chế ở mức thấp nhất. Những yêu cầu của phần mềm Trong phần tiếp theo của loạt bài 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 website mod_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 \ prefix=/usr/local/apache2 \ with-mpm=prefork \ enable-ssl \ disable-charset-lite \ disable-include \ disable-env \ enable-setenvif \ disable-status \ disable-autoindex \ disable-asis \ disable-cgi \ disable-negotiation \ disable-imap \ disable-actions \ disable-userdir \ disable-alias \ disable-so Sau khi cấu hình xong, chúng ta có thể cài đặt Apache theo thư mục gốc: make su umask 022 make install chown -R root:sys /usr/local/apache2 Xem tiếp Phần I Cấu hình SSL/TLS Trước khi chạy Apache lần đầu tiên, chúng ta cũng cần cung cấp cấu hình ban đầu và tham gia một số nội dung web mẫu. Ít nhất, chúng ta cần theo các bước sau (như là Root): [...]... HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLMutex file:/usr/local/apache2/logs /ssl_ mutex SSLRandomSeed startup file:/dev/urandom 1024 SSLRandomSeed connect file:/dev/urandom 1024 SSLSessionCache shm:/usr/local/apache2/logs /ssl_ cache_shm SSLSessionCacheTimeout 600 SSLPassPhraseDialog builtin SSLCertificateFile /usr/local/apache2/conf /ssl. crt/server.crt SSLCertificateKeyFile /usr/local/apache2/conf /ssl. key/server.key SSLVerifyClient none SSLProxyEngine... combined CustomLog logs /ssl_ request_log \ "%t %h %{HTTPS}x % {SSL_ PROTOCOL}x % {SSL_ CIPHER}x \ % {SSL_ CIPHER_USEKEYSIZE}x % {SSL_ CLIENT_VERIFY}x \"%r\" %b" # ================================================= # SSL/ TLS settings # ================================================= Listen 0.0.0.0:443 SSLEngine on SSLOptions +StrictRequire SSLRequireSSL SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM... mkdir $SSLDIR mkdir $SSLDIR/certs mkdir $SSLDIR/crl mkdir $SSLDIR/newcerts mkdir $SSLDIR/private mkdir $SSLDIR/requests touch $SSLDIR/index.txt echo "01" > $SSLDIR/serial chmod 700 $SSLDIR 2 Tạo file cấu hình OpenSSL chính $SSLDIR/openssl.cnf với nội dung sau (tối ưu cho cách dùng với web server SSL) : # ================================================= # OpenSSL configuration file # =================================================... ở chế độ disable), nếu cơ chế SSL/ TLS proxy không được dùng SSLProxyEngine Bảng 1 Các thiết lập cần thiết cho mod _ssl Thiết lập mẫu của chúng ta tương ứng với các hướng dẫn trên có thể tìm thấy trong httpd.conf như sau: SSLEngine on SSLOptions +StrictRequire SSLRequireSSL SSLProtocol -all +TLSv1 +SSLv3 # Support only for strong cryptography SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM... HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM # Support for strong and export cryptography # SSLCipherSuite HIGH:MEDIUM:EXP:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM: +EXP SSLRandomSeed startup file:/dev/urandom 1024 SSLRandomSeed connect file:/dev/urandom 1024 SSLSessionCache shm:/usr/local/apache2/logs /ssl_ cache_shm SSLSessionCacheTimeout 600 SSLVerify none SSLProxyEngine off Ngoài các hướng dẫn về mod _ssl ở trên còn có hai phần quan trọng khác trong... sẽ không dùng SSL/ TLS được SSLRequireSSL Phải đặt ở chế độ cho phép, nếu không người dùng có thể truy cập nội dung web qua các yêu cầu HTTP thông thường mà không cần chút gì tới SSL/ TLS SSLProtocol SSLProxyProtocol SSLCipherSuite SSLProxyCipherSuite Nên thiết lập chế độ chỉ dùng TLS v1.0 và SSL v3.0 Hầu hết các web browser hiện nay đểu hỗ trợ cả hai Vì thế chúng ta có thể vô hiệu hoá SSL v2.0 một cách... nữa Để thu hồi, chúng ta cần tìm dãy số của chứng chỉ mà chúng ta muốn trong file $SSLDIR/index.txt Sau đó có thể thu hồi như sau: openssl ca \ -config $SSLDIR/openssl.cnf \ -revoke $SSLDIR/newcerts/.pem Để tạo ra một file CRL (Certificate Revocation List), chúng ta có thể dùng các câu lệnh sau: openssl ca -config $SSLDIR/openssl.cnf -gencrl -crlexts crl_ext -md sha1 -out $SSLDIR/crl.pem File trên nên... ghi thông tin về tham số của SSL (yêu cầu tối thiểu: phiên bản của giao thức và bộ mã hoá được chọn) chúng ta nên dùng các giá trị sau: CustomLo g Setenvif CustomLog logs /ssl_ request_log \ "%t %h %{HTTPS}x % {SSL_ PROTOCOL}x % {SSL_ CIPHER}x % {SSL_ CIPHER_USEKEYSIZE}x % {SSL_ CLIENT_VERIFY}x \"%r\" %b" Để tương thích với các phiên bản cũ của MS Internet Explorer với các lỗi trong phần thực thi SSL (ví dụ các... -extensions ssl_ server \ -out $SSLDIR/requests/signed.pem \ -infiles $SSLDIR/requests/request.pem 4 Kết quả của câu lệnh trên là một chứng chỉ kí (signed.pem) được đặt vào thư mục $SSLDIR/newcerts, và trong file $SSLDIR/signed.pem Nó bao gồm cả một bản thể hiện kiểu TXT và PEM của chứng chỉ Bởi vì Apache muốn có kiểu định dạng thuần PEM, nên chúng ta cần chuyền đổi nó như sau: openssl x509 \ -in $SSLDIR/requests/signed.pem... của truyền thông SSL Phần III Giới thiệu phần III Bài này kết thúc loạt ba bài giới thiệu về cách cấu hình Apache 2.0 hỗ trợ giao thức SSL/ TLS để an ninh tối đa và thực thi tối ưu cho SSL dựa trên các giao dịch thương mại điện tử Phần I giới thiệu các khía cạnh về khóa của SSL/ TLS, và chỉ ra làm cách nào để biên dịch, cài đặt, và cấu hình Apache 2.0 Phần II mô tả cấu hình của mod _ssl và các nguồn thẩm . ================================================= # SSL/ TLS settings # ================================================= Listen 0.0.0.0:443 SSLEngine on SSLOptions +StrictRequire SSLRequireSSL SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite. shm:/usr/local/apache2/logs /ssl_ cache_shm SSLSessionCacheTimeout 600 SSLPassPhraseDialog builtin SSLCertificateFile /usr/local/apache2/conf /ssl. crt/server.crt SSLCertificateKeyFile /usr/local/apache2/conf /ssl. key/server.key SSLVerifyClient. dẫn trên có thể tìm thấy trong httpd.conf như sau: SSLEngine on SSLOptions +StrictRequire <Directory /> SSLRequireSSL </Directory> SSLProtocol -all +TLSv1 +SSLv3 # Support

Ngày đăng: 05/07/2014, 03:23

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan