Điểm:0

Có thể xác minh TLS nếu máy chủ không cung cấp chứng chỉ nhà phát hành không?

lá cờ kz

Tôi đang cố định cấu hình Apache httpd v2.4 để xác thực LDAP cho AD. Chứng chỉ LDAPS được cấp bởi CA nội bộ. Vì bất kỳ lý do gì (tôi không thuộc nhóm AD), cả môi trường sản xuất hoặc không sản xuất của chúng tôi đều không xuất bản toàn bộ chuỗi.

Non-prod gửi máy chủ và chứng chỉ trung gian, nhưng không gửi chứng chỉ gốc. Tôi có thể kết nối thành công qua Apache với:

LDAPerifyServerCert Bật
LDAPTrustedGlobalCert CA_BASE64 chain.crt
# $cat trung gian.pem root.pem > chain.crt

Thật không may, prod chỉ gửi chứng chỉ máy chủ. Không có trung gian (nhà phát hành) và không có gốc. Cung cấp cùng một chuỗi chứa tổ chức phát hành và gốc không hoạt động. Tôi đã thử mọi thứ tôi có thể nghĩ ra: chỉ chứng chỉ máy chủ, chỉ int, máy chủ + int, máy chủ + int + root, nhưng không có cái nào hoạt động, cả trong Apache hoặc thử nghiệm với openssl s_client -connect $x -CAfile $y.

Rõ ràng, tùy chọn tốt nhất là yêu cầu nhóm AD xuất bản toàn bộ chuỗi, nhưng có cách nào khác để xác minh kết nối (ngoài việc tắt xác minh) không?

Chỉnh sửa:

Đây là đầu ra của openssl s_client -connect devldap.company.com:636 -CAfile int+root.pem:

ĐÃ KẾT NỐI(00000003)
độ sâu = 2 CN = CA gốc của công ty
xác minh trả lại: 1
độ sâu=1 DC = com, DC = công ty CN = Công ty trung gian CA
xác minh trả lại: 1
depth=0 C = US, ST = State, O = Company, OU = OTS, CN = devldap.company.com
xác minh trả lại: 1
---
Chuỗi chứng chỉ
 0 s:C = US, ST = Bang, O = Công ty, OU = OTS, CN = devldap.company.com
   i:DC = com, DC = công ty CN = CA trung gian của công ty
 1 s:DC = com, DC = công ty CN = CA trung gian của công ty
   i:CN = CA gốc của công ty
---
Chứng chỉ máy chủ
-----BẮT ĐẦU GIẤY CHỨNG NHẬN----
MIIH8TCCBtmgAwIBAgITTQACdEm5xkCMTnqGDQAAAAJ0STANBgkqhkiG9w0BAQsF
...
jce8VpEUyZKDClUrcyRBSxd0rq2I
-----GIẤY CHỨNG NHẬN KẾT THÚC-----
chủ đề=C = US, ST = Bang, O = Công ty, OU = OTS, CN = devldap.company.com

nhà phát hành=DC = com, DC = công ty CN = CA trung gian của công ty

---
Không có tên CA chứng chỉ ứng dụng khách nào được gửi
Các loại chứng chỉ ứng dụng khách: ký hiệu RSA, ký hiệu DSA, ký hiệu ECDSA
Thuật toán chữ ký được yêu cầu: RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1:RSA+SHA512:ECDSA+SHA512
Thuật toán chữ ký được yêu cầu chia sẻ: RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:RSA+SHA512:ECDSA+SHA512
Thông báo ký ngang hàng: SHA256
Loại chữ ký ngang hàng: RSA
Khóa tạm thời máy chủ: ECDH, P-384, 384 bit
---
Bắt tay SSL đã đọc 4639 byte và ghi 486 byte
Xác minh: OK
---
Mới, TLSv1.2, Mật mã là ECDHE-RSA-AES256-GCM-SHA384
Khóa công khai của máy chủ là 2048 bit
Đàm phán lại an toàn IS được hỗ trợ
Nén: KHÔNG CÓ
Mở rộng: KHÔNG CÓ
Không có ALPN nào được thương lượng
Phiên SSL:
    Giao thức: TLSv1.2
    Mã: ECDHE-RSA-AES256-GCM-SHA384
    ID phiên: F90...411
    Phiên-ID-ctx: 
    Khóa chính: 985...D1E
    Danh tính PSK: Không có
    Gợi ý nhận dạng PSK: Không có
    Tên người dùng SRP: Không có
    Thời gian bắt đầu: 1651420792
    Thời gian chờ: 7200 (giây)
    Xác minh mã trả về: 0 (ok)
    Bí mật tổng thể mở rộng: có
---
XONG

Và đối với sản phẩm, openssl s_client -connect ldap.company.com:636 -CAfile int+root.pem:

ĐÃ KẾT NỐI(00000003)
độ sâu=0 C = US, ST = Bang, O = Công ty, CN = ldap.company.com
xác minh lỗi:num=20:không thể lấy chứng chỉ nhà phát hành địa phương
xác minh trả lại: 1
độ sâu=0 C = US, ST = Bang, O = Công ty, CN = ldap.company.com
lỗi xác minh: num=21: không thể xác minh chứng chỉ đầu tiên
xác minh trả lại: 1
độ sâu=0 C = US, ST = Bang, O = Công ty, CN = ldap.company.com
xác minh trả lại: 1
---
Chuỗi chứng chỉ
 0 s:C = US, ST = Bang, O = Công ty, CN = ldap.company.com
   i:DC = com, DC = công ty CN = CA trung gian của công ty
---
Chứng chỉ máy chủ
-----BẮT ĐẦU GIẤY CHỨNG NHẬN----
MIIHXzCCBkegAwIBAgITTQADO1BEj8rlaKH+eQAAAAM7UDANBgkqhkiG9w0BAQsF
...
FGBKggzc3AK2pcHT9E3f46Oy+A==
-----GIẤY CHỨNG NHẬN KẾT THÚC-----
chủ đề=C = Hoa Kỳ, ST = Tiểu bang, O = Công ty, CN = ldap.company.com

nhà phát hành=DC = com, DC = công ty CN = CA trung gian của công ty

---
Không có tên CA chứng chỉ ứng dụng khách nào được gửi
---
Bắt tay SSL đã đọc 2059 byte và ghi 655 byte
Lỗi xác minh: không thể xác minh chứng chỉ đầu tiên
---
Mới, SSLv3, Mật mã là AES256-SHA
Khóa công khai của máy chủ là 2048 bit
Đàm phán lại an toàn KHÔNG được hỗ trợ
Nén: KHÔNG CÓ
Mở rộng: KHÔNG CÓ
Không có ALPN nào được thương lượng
Phiên SSL:
    Giao thức: TLSv1.2
    Mã: AES256-SHA
    ID phiên: 33B...377
    Phiên-ID-ctx: 
    Khóa chính: A5D...ACE
    Danh tính PSK: Không có
    Gợi ý nhận dạng PSK: Không có
    Tên người dùng SRP: Không có
    Thời gian bắt đầu: 1651420815
    Thời gian chờ: 7200 (giây)
    Xác minh mã trả lại: 21 (không thể xác minh chứng chỉ đầu tiên)
    Bí mật tổng thể mở rộng: không
---
XONG

Chỉnh sửa: Hóa ra tệp có tên "int.pem" thực sự là chứng chỉ máy chủ từ một dự án khác. gọn gàng. Ước gì tôi đã kiểm tra điều đó trước khi lãng phí quá nhiều thời gian vào việc này. Với một chuỗi chứa chứng chỉ CA trung gian thực tế và gốc, nó sẽ xác minh thành công.

dave_thompson_085 avatar
lá cờ jp
Các máy chủ TLS được phép (và đôi khi được khuyến khích) bỏ qua chứng chỉ gốc; trường hợp không sản xuất của bạn là bình thường và sẽ hoạt động với (chỉ) quyền root trong `LDAPTrustedGlobalCert CA*`. OpenSSL theo mặc định có thể điền vào chuỗi từ cửa hàng ủy thác và `openssl s_client -connect $prod:636 -CAfile int_and_root.pem` (nếu máy chủ openssl bên dưới 1.1.1 _and_ muốn SNI mà tôi không biết cho MS, hãy thêm `- tên máy chủ $prod`) sẽ hoạt động; nếu không, bạn có thể cho biết chi tiết? Nhưng trong khi Apache sử dụng OpenSSL cho https, thì tôi không rõ liệu (hoặc làm thế nào) nó sử dụng OpenSSL cho ldaps, vì vậy điều đó có thể không hữu ích.
Joe Buckley avatar
lá cờ kz
@dave_thompson_085 Tôi đã thêm đầu ra s_client vào bài đăng. Bạn có phiền khi có một cái nhìn khác?
Joe Buckley avatar
lá cờ kz
@dave_thompson_085 Cảm ơn rất nhiều! Thật không may, đó là lỗi người dùng từ phía tôi. Bằng cách nào đó, điều tôi đã thề là chứng chỉ trung gian thực sự là chứng chỉ máy chủ cho một thứ hoàn toàn khác. Đã tạo một .pem mới với int + root thực tế và nó xác minh và cũng đang hoạt động trong Apache.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.