Apache Bad Request Kích thước của trường tiêu đề yêu cầu vượt quá giới hạn máy chủ với Kerberos SSO


9

Tôi đang thiết lập SSO cho người dùng Active Directory thông qua một trang web chạy trên Apache (Apache2 trên SLES 11.1) và khi thử nghiệm với Firefox, tất cả đều hoạt động tốt. Nhưng khi tôi cố gắng mở trang web trong Internet Explorer 8 (Windows 7), tất cả những gì tôi nhận được là

"Yêu cầu xấu

Trình duyệt của bạn đã gửi một yêu cầu mà máy chủ này không thể hiểu được.

Kích thước của một lĩnh vực yêu cầu tiêu đề vượt quá giới hạn máy chủ.

Ủy quyền: Đàm phán [chuỗi siêu dài] "

Vhost.cfg của tôi trông như thế này:

<VirtualHost hostname:443>
  LimitRequestFieldSize 32760
  LimitRequestLine 32760
  LogLevel debug

  <Directory "/data/pwtool/sec-data/adbauth">
    AuthName "Please login with your AD-credentials (Windows Account)"
    AuthType Kerberos
    KrbMethodNegotiate on
    KrbAuthRealms REALM.TLD
    KrbServiceName HTTP/hostname
    Krb5Keytab /data/pwtool/conf/http_hostname.krb5.keytab
    KrbMethodK5Passwd on
    KrbLocalUserMapping on
    Order allow,deny
    Allow from all
  </Directory>

  <Directory "/data/pwtool/sec-data/adbauth">
    Require valid-user
  </Directory>

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /etc/apache2/ssl.crt/hostname-server.crt
    SSLCertificateKeyFile /etc/apache2/ssl.key/hostname-server.key
</VirtualHost>

Tôi cũng đảm bảo rằng các cookie đã bị xóa và thử một vài giá trị nhỏ hơn cho LimitRequestFieldSize và LimitRequestLine.

Một điều có vẻ kỳ lạ đối với tôi là ngay cả với gỡ lỗi LogLevel tôi cũng không nhận được bất kỳ nhật ký nào về việc này. Dòng cuối cùng của nhật ký là

ssl_engine_kernel.c(1879): OpenSSL: Write: SSL negotiation finished successfully

Có ai có ý tưởng về điều đó?


Bạn đã có thể tìm một giải pháp cho vấn đề này? Tôi có cùng một triệu chứng.
Gani Simsek

Này Gani, tôi không chắc lắm. Tôi đã viết "giải pháp không chắc chắn nếu hoạt động" tại đây serverfault.com/a/426599/111458 . Xin thứ lỗi cho câu trả lời muộn màng của tôi. Nếu bạn vẫn cần giải pháp, hãy thử câu trả lời của tôi và cho tôi / chúng tôi biết nếu nó hoạt động =)
Aurelin

Câu trả lời:


7

Ruột của tôi nói rằng bạn đã có một mã thông báo bảo mật rất lớn, có thể vì người dùng là thành viên của một số lượng lớn các nhóm. Việc triển khai AD Kerberos sẽ cung cấp cho Apache Chứng chỉ thuộc tính đặc quyền (PAC) theo mặc định. Cấu trúc này có thể lớn nếu người dùng là thành viên của một số nhóm đáng kể. Bạn có thể sử dụng tokensz.execông cụ để xem kích thước mã thông báo của người dùng.

Nếu đây là sự cố, bạn có thể sửa đổi thuộc tính UserAccountControl của tài khoản người dùng để ngăn PAC được gửi.

Bạn có thể thoát khỏi việc sửa đổi /etc/krb5.conftệp của mình để tham chiếu KDC như kdc = tcp/kdc.name.here. Vấn đề này có thể xảy ra nếu PAC làm cho mã thông báo quá lớn đối với datagram UDP, nhưng việc buộc truyền thông tới KDC bằng TCP cũng là một cách giải quyết có thể.

Thay đổi giá trị đó trên 1.000 người dùng không khó đối với quản trị viên AD của bạn nếu nó giải quyết được vấn đề của bạn.


(Uh chết tiệt, vô tình xóa bình luận. Có vẻ như tôi vẫn đang ngủ) Vâng, vì vậy tôi có thể hỏi họ liệu họ có thay đổi điều đó không, nhưng tôi nghi ngờ điều đó là do org. kết cấu. Và không phải dự án của tôi là cực kỳ quan trọng, vì vậy .. Tôi sẽ thử sửa đổi /etc/krb5.conf trước .. Cảm ơn. Btw, có ai biết tại sao vấn đề này chỉ xảy ra trong IE, nhưng không phải trong Opera hay Firefox không?
Aurelin

Tôi đã cố gắng sửa đổi /etc/krb5.conf, nhưng điều đó không khắc phục được. Một điều khác tôi vừa tìm ra là liên kết của bạn chỉ mô tả một giải pháp cho Máy chủ Win2k3, nhưng chúng tôi chạy Win2k8 RC2. Tôi quên đề cập đến điều đó, xin lỗi.
Aurelin

Chà .. tôi phải nói rằng nó hơi kỳ lạ
Aurelin

2

Tôi đã gặp lỗi này trên trang web Drupal 7 trong Safari trên Mac và thấy rằng việc đóng các cửa sổ trình duyệt và xóa bộ nhớ cache của trình duyệt, thoát khỏi trình duyệt, mở lại và tải lại trang đã hoạt động để ngừng lỗi chỉ xảy ra lần này

Yêu cầu xấu Trình duyệt của bạn đã gửi một yêu cầu mà máy chủ này không thể hiểu được. > Kích thước của trường tiêu đề yêu cầu vượt quá giới hạn máy chủ. Cookie / n


2
Nghe có vẻ như là một giải pháp "Microsoft" đối với tôi: Khởi động lại và hy vọng vấn đề sẽ biến mất.
Colin 't Hart

1
@Colin, bất kể câu trả lời này có vẻ giống như câu trả lời của "Microsoft", nhiều lần, đó chính xác là những gì được yêu cầu. Khi xóa bộ nhớ cache của trình duyệt, nhiều trình duyệt không thể xóa bộ nhớ cache trong bộ nhớ, do đó cần phải khởi động lại trình duyệt. Nó chắc chắn áp dụng cho các phiên bản Mac của Firefox, Chrome và Camino. Tôi không bao giờ sử dụng Safari vì vậy tôi không thể nhận xét về cái đó.
John Gardeniers

1

Tôi đã tìm thấy một giải pháp khác, mặc dù tôi không chắc nó có thực sự hiệu quả hay không. Tài liệu Apache tuyên bố rằng đối với các gói lớn, tôi sẽ phải đặt LimitRequestFieldSize và / hoặc LimitRequestLine.

Vấn đề là nếu bạn muốn đặt giá trị của LimitRequestLine thành bất cứ thứ gì cao hơn 8KB thì bạn sẽ phải sửa đổi nguồn và biên dịch lại Apache, vì 8KB là maxSize cố định ( http://httpd.apache.org/docs/ 2.2 / mod / core.html # limitrequestline ).

Tôi không biết chắc chắn nếu phương pháp này hoạt động, bởi vì tôi đã cài đặt lại apache từ kho lưu trữ của chúng tôi trên máy chủ thứ hai sau đó. Có vẻ như đây là một phiên bản gói khác vì sự cố không xảy ra ở đó.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.