intTypePromotion=1
ADSENSE

Apache 2 hỗ trợ SSL/TLS: Hướng dẫn từng bước (Phần II)

Chia sẻ: Nguyen Thai Ha | Ngày: | Loại File: PDF | Số trang:24

63
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong phần đầu tiên của loạt bài này, các bạn đã được hướng dẫn cách cài đặt, mềm Apache 2.0 hỗ trợ SSL/TLS. Bây giờ, phần hai sẽ tiếp tục thảo luận vấn đ để đạt được mức an toàn cao nhất và sự thực thi tối ưu. Đồng thời các bạn cũn thế nào để tạo ra một Quyền hạn chứng chỉ (Certification Authority) nội bộ và trên thư viện nguồn mở OpenSSL.

Chủ đề:
Lưu

Nội dung Text: Apache 2 hỗ trợ SSL/TLS: Hướng dẫn từng bước (Phần II)

  1. Apache 2 hỗ trợ SSL/TLS: Hướng dẫn từng bước (Phần II)
  2. Phần II Trong phần đầu tiên của loạt bài này, các bạn đã được hướng dẫn cách cài đặt, mềm Apache 2.0 hỗ trợ SSL/TLS. Bây giờ, phần hai sẽ tiếp tục thảo luận vấn đ để đạt được mức an toàn cao nhất và sự thực thi tối ưu. Đồng thời các bạn cũn thế nào để tạo ra một Quyền hạn chứng chỉ (Certification Authority) nội bộ và trên thư viện nguồn mở OpenSSL. Những yêu cầu thiết lập cho mod_ssl Trong Apache 2.0.52 có hơn 30 hướng dẫn có thể dùng để cấu hình mod_ssl. B hướng dẫn này có thể tìm thấy trong Apache's mod_ssl documentation. Phần n yêu cầu thiết lập để nâng cao độ an toàn và sự thực thi của kết nối SSL/TLS. Danh sách các thiết lập này được chỉ ra trong bảng dưới đây: Chỉ thị Các yêu cầu thiết lập hoặc chú thích
  3. Phải đặt ở chế độ cho phép, nếu khôn SSLEngine trạm ảo) sẽ không dùng SSL/TLS đượ Phải đặt ở chế độ cho phép, nếu khôn SSLRequireSSL cập nội dung web qua các yêu cầu HT không cần chút gì tới SSL/TLS. SSLProtocol Nên thiết lập chế độ chỉ dùng TLS v1 các web browser hiện nay đểu hỗ trợ c SSLProxyProtocol thể vô hiệu hoá SSL v2.0 một cách an Để tạo ra phương thức mã hoá mạnh, HIGH (>168 bits) và MEDIUM (128 SSLCipherSuite bits) và NULL (không mã hoá) đặt bộ vô hiệu hoá. Nên vô hiệu hoá tất cả cá SSLProxyCipherSuite dạng nặc danh (aNULL). Nhưng cũng ta muốn hỗ trợ cho web browser mà k dùng bộ mã hoá EXPORT (56 bit và 4
  4. chúng ta nên dùng SHA1 hơn là MD5 an toàn hơn MD5, sau khi phát hiện ra Tóm lại, các thiết lập cần thiết nên là: HIGH:MEDIUM:!aNULL:+SHA1:+M Chú ý: có thể xem các thiết lập hỗ trợ openssl ciphers -v 'HIGH:MEDIUM:\!aNULL:+SHA1:+ Tuỳ chọn "+StrictRequire" nên được t SSLOptions "Satisfy Any" có thể ép mod_ssl cho p web ngay cả khi SSL/TLS không đượ Để khởi động Apache nên cài đặt để s SSLRandomSeed giả (/dev/urandom) và/hoặc EGD (En Daemon). Trước khi mỗi kết nối SSL
  5. cấu hình lại để dùng nguồn được cài đ EGD. Không nên dùng /dev/random t Bởi vì /dev/random chỉ có thể cung cấ thời điểm nhất định nào đó. Để tránh lặp lại các “bắt tay” SSL cho song (ví dụ khi web browser tải nhiều SSLSessionCache khoảng thời gian), SSL caching nên đ để dùng bộ nhớ chia sẻ (SHM), hoặc D "none", thực thi của web server có thể Giá trị này mô tả số giây thời gian sau SSLSessionCache hết hiệu lực. Nó nê 600 giây. Tuy nhiên thời gian thực ph SSLSessionCacheTimeout trung bình người dùng sử dụng trong server. Ví dụ nếu thời gian trung bình trị thiết lập nên ít nhất là 900 (15 phút
  6. Khi không dùng bộ nhận dạng client h này nên đặt ở chế độ “none”. Không b SSLVerifyClient chế độ "optional_no_ca". Bởi vì ngượ PKI, những chỗ nào client được nhận SSLProxyVerify các chứng chỉ phù hợp. “Optional” thỉ thuộc xem là cần hay không), tuy nhiê việc với tất cả các web browser. SSLVerifyDepth Nên là con số lớn nhất của CA trung g chứng chỉ tự kí nên đặt nó là 0, cho cá SSLProxyVerifyDepth bởi Root CA, nên đặt là 1… Nên vô hiệu hoá (đặt ở chế độ disable SSLProxyEngine proxy không được dùng. 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 t
  7. SSLEngine on SSLOptions +StrictRequire SSLRequireSSL SSLProtocol -all +TLSv1 +SSLv3 # Support only for strong cryptography SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+M # Support for strong and export cryptography # SSLCipherSuite HIGH:MEDIUM:EXP:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM:+E SSLRandomSeed startup file:/dev/urandom 1024 SSLRandomSeed connect file:/dev/urandom 1024
  8. 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 (mod_log_config và mod_set_envif) cũng cần được cài đặt theo bảng 2 sau đây Chỉ thị Yêu cầu thiết lập hoặc chú thích Để ghi thông tin về tham số của SSL (yêu cầu tố của giao thức và bộ mã hoá được chọn) chúng ta sau: CustomLog CustomLog logs/ssl_request_log \ "%t %h %{HTTPS}x %{SSL_PROTOCOL %{SSL_CIPHER}x
  9. %{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 Int các lỗi trong phần thực thi SSL (ví dụ các vấn đ alive, HTTP 1.1 trên SSL, các cảnh bào chú ý đó cuối kết nối. Các tuỳ chọn sau nên thiết lập: SetEnvIf User-Agent ".*MSIE.*" \ Setenvif nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 Tuỳ chọn trên là nguyên nhân web server sẽ dùn kết nối keep – alive và sẽ không gửi chú ý đóng browser là MS Internet Explorer. Bảng 2. Các yêu cầu thiết lập cho mod_log và mod_set_envif.
  10. File cấu hình mẫu (httpd.conf) thể hiện trong bài trước đã bao gồm các tuỳ chọ thuận tiện hơn. Bộ nhận dạng web server Cho tới giờ, chúng ta có thể cấu hình và kiểm tra SSL/TLS, nhưng web browse kiểm tra được nhận dạng của web server. Trong bài đầu tiên, chúng ta đã dùng được tạo ra nhằm mục đích kiểm tra và không chứa các thông tin yêu cầu cho n dịch thương mại. Để web browser nhận dạng thành công web server, chúng ta cần tạo ra một chứ hợp, nên bao gồm:  Khoá thông thường cho web server  Ngày tháng có hiệu lực (ngày bắt đầu và ngày hết hạn)  Hỗ trợ các thuật toán mã hoá  Bộ tên riêng biệt (DN), phải bao gồm đầy đủ tên miền có giá trị của web là tên thông thường (CN). Tuy nhiên cũng có thể có một số thành phần khác nh
  11. khu vực (L), tên tổ chức (O), tên đơn vị tổ chức (OU) hoặc có thể hơn.  Dãy số chứng chỉ  Thuộc tính X.509v3 sẽ nói cho web browser về kiểu và cách dùng của ch  URI của điểm phân phối CRL (nếu tồn tại)  URI của X.509v3 Certificate Policy (nếu tồn tại)  Tên và chữ kí được xác nhận bởi bộ nhận dạng chứng chỉ (CA) Chú ý quan trọng là thuộc tính tên thông thường (CN) phải là tên miền có đủ đ Nếu không web browser sẽ không thể kiểm chứng được chứng chỉ có thuộc we không. Mẫu chứng chỉ web server (mẫu kiểu text) có thể như sau: Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1)
  12. Signature Algorithm: sha1WithRSAEncryption Issuer: O=Seccure, OU=Seccure Root CA Validity Not Before: Nov 28 01:00:20 2004 GMT Not After : Nov 28 01:00:20 2005 GMT Subject: O=Seccure, OU=Seccure Labs, CN=www.seccure.lab Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c1:19:c7:38:f4:89:91:27:a2:1b:1d:b6:8d:91: 48:63:0e:3d:0d:2e:f8:65:45:56:db:98:4d:11:21: 01:ac:81:8e:3f:64:4a:8a:3f:21:15:ca:49:6e:64: 5c:5d:a2:ab:5a:48:cb:2a:9f:0c:02:b9:ff:52:f6: d9:39:6d:a3:4a:94:41:f9:e9:ab:f0:42:fb:68:9a: 4b:53:41:e7:4f:b0:2b:02:d7:92:a2:2b:02:a2:f9: f1:2d:68:fa:50:01:2f:49:c1:28:2f:a8:c6:6d:6d:
  13. ab:1d:b9:bd:c9:80:63:f1:d6:22:19:de:2d:4a:43: 50:76:79:7e:a5:5a:75:af:19 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Server X509v3 Key Usage: Digital Signature, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication, Netscape Server Gated Cryp Gated Crypto Netscape Comment: OpenSSL Certificate for SSL Web Server Signature Algorithm: sha1WithRSAEncryption 45:30:9d:04:0e:b7:86:9e:61:a1:b0:68:2b:44:93:1c:57:2a:
  14. 99:42:bb:16:b1:ab:f5:c0:d2:33:12:c8:d3:1d:2b:bb:6b:9a: 4c:c7:53:bc:e4:88:ef:1e:c3:37:ed:53:2c:15:cf:b8:90:df: df:4b:34:b8:db:cc:23:77:46:06:72:9d:43:60:a8:a2:ed:0a: bb:1a:a4:e8:4e:ba:66:93:63:74:87:fd:43:48:b6:93:a2:e3: 3d:da:1b:64:46:35:88:b4:4b:22:e6:3c:84:70:5d:88:dd:64: c2:51:c2:d6:59:80:87:bc:bd:7f:e3:c1:45:7e:c0:5f:9c:ca: e1:a1 Ví dụ tiếp theo dựa trên một số giá trị thể hiện trong bảng 3. Để tạo ra một chứ thay thế một số giá trị này bằng tên công ty hay tổ chức của bạn: Mô tả thuộc Thuộc Ví dụ mẫu tính tính Mã quốc gia C C = PL (2 kí tự) Bang hay tỉnh S S = mazowi
  15. Khu vực L L = Warsaw Tên tổ chức O O = Seccure Đơn vị tổ OU OU = Seccu chức Tên thông CN CN thường = www.secc Bảng 3. Ví dụ mẫu cho một chứng chỉ đúng Có nên dùng mật khẩu để bảo vệ? Trước khi bắt đầu tạo các chứng chỉ, việc hiểu ý nghĩa mật khẩu (passphrase) t trọng. Các khoá private của web server có nên được mã hoá hay không? Có nh trong đó có ý kiến cho rằng không nên bảo vệ khoá private bằng mật khẩu. Nó tạo ra cảm giác thiếu an toàn. Vì sao? Hãy xem các điểm sau: 1. Thứ nhất, nó đòi hỏi phải nhập mật khẩu sau mỗi lần khởi động lại web serv
  16. nếu hệ thống cần khởi động lại thường xuyên (như do cập nhật lại code, một lỗ hình, v.v…). 2. Nếu một kẻ xâm nhập nào đó chế ngự và lấy đi khoá private trên web server phá hoại và kẻ xâm nhập có quyền truy cập vào hệ điều hành của web server ở này, kẻ xâm nhập có thể lấy cắp mật khẩu bằng cách cài keylogger. Và sau đó, khởi động lại hệ thống để ép người quản trị nhập lại mật khẩu. Kẻ xâm nhập có Apache và tìm ra khoá private của web server lưu trữ trong một đoạn nào đó. Do vậy, nâng cao mã hoá khoá private của web server bằng mật khẩu chỉ giúp những đứa trẻ. Còn đối với các chuyên gia phá hoại hệ thống thì vô tác dụng. Tạo chứng chỉ web server Trong phần này chúng ta có thể tạo các chứng chỉ web server. Thông thường c chúng ta có thể dùng: 1. Chứng chỉ tự kí (self-signed certificate)
  17. 2. Chứng chỉ được chứng nhận bởi CA (hầu hết) 3. Chứng chỉ được kí bởi CA nội bộ Phần dưới đây sẽ mô tả chi tiết phương thức tạo các chứng chỉ trên. Kết quả cu thức nào được dùng sẽ chỉ có 2 file:  server.key – khoá private của web server  server.crt - chứng chỉ mã hoá PEM bao gồm cả khoá public của web brow Phương thức 1: Chứng chỉ tự kí (chỉ dùng cho mục đích kiểm tra) Phương thức này được đưa ra chỉ để tiếp tục quá trình kiểm tra của chúng ta, h nhỏ, gần gũi (chẳng hạn như tại nhà hay một mạng Intranets nhỏ). Để web bro được web server chứng chỉ tự kí phải được cài đặt vào mọi web browser cần tr này có thể khá bất tiện. Cặp đôi khoá public/private của web server và chứng chỉ mã hoá tự kí PEM có
  18. openssl req \ -new \ -x509 \ -days 365 \ -sha1 \ -newkey rsa:1024 \ -nodes \ -keyout server.key \ -out server.crt \ -subj '/O=Seccure/OU=Seccure Labs/CN=www.seccure.lab' Các câu lệnh trên sẽ tạo ra một chứng chỉ mới (-new), có tên (-x509), có giá trị 365), và sẽ được kí bằng cách dùng thuật toán SHA1 (-sha1). Khoá private RS newkey rsa: 10224), và không cần bảo vệ bằng mật khẩu (-nodes). Chứng chỉ v public/private sẽ được tạo trong hai file “server.crt” và “server.key”. Tên của k Labs” và tên miền đầy đủ là: www.seccure.lab. Sau khi tạo ra chứng chỉ trên, chúng ta cần phân phối và cài đặt nó trên mọi we
  19. với web server. Nếu không thì khi web browser đòi hỏi một kết nối, nó sẽ khôn nhận dạng của web server. Trong môi trường Windows, điều này được thể hiện dưới đây: Phương thức 2: Chứng chỉ được kí bởi CA Tạo một yêu cầu chứng chỉ và kí nó bằng một CA tin cậy (chẳng hạn như Vers cách được dùng nhiều nhất để biết web server SSL có được đưa vào internet ha cận này thì không cần phải cài đặt chứng chỉ tại mọi web browser. Bởi hầu hết của chứng chỉ CA từ trước khi được cài đặt.
  20. Hãy chú ý rằng, mỗi một bộ thẩm định chứng chỉ (CA) có các giới hạn khác nh tên riêng, cung cấp độ dài cho một khoá, các kí tự quốc tế. Do đó, trước khi tạo bạn cần chắc chắn rằng các yêu cầu chứng chỉ của bạn phù hợp với đòi hỏi cụ CA mà các chứng chỉ đã kí của nó được cài đặt trên hầu hết các web browser ( và một số hãng khác…). Nếu không thì web browser của người dùng có thể gặ web server. Quá trình thu được một chứng chỉ kí bởi một CA tin cậy bao gồm các bước sau 1. Bước đầu tiên chúng ta nên tạo một cặp khoá public/private (trong server. (trong request.pem) như sau: openssl req \ -new \ -sha1 \ -newkey rsa:1024 \ -nodes \
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD


intNumView=63

 

Đồng bộ tài khoản
2=>2