Điểm:0

mTLS: hạn chế chứng chỉ ứng dụng khách đối với tên miền phụ cụ thể?

lá cờ pk
Joe

tldr

Thông qua mTLS, tôi đang cố gắng tìm cách cấp chứng chỉ ứng dụng khách chỉ cấp cho ứng dụng khách đó quyền truy cập vào một tên miền phụ cụ thể. Tôi có một nghi ngờ rằng điều này là không thể, nhưng tôi không chắc chắn.

Những gì tôi đang cố gắng để hoàn thành

Giả sử tôi có một máy chủ lắng nghe mọi thứ được định tuyến đến *.foo.flar.com

Mỗi khách hàng được chỉ định tên miền phụ của riêng họ đáp ứng ký tự đại diện trong địa chỉ của máy chủ.

Ví dụ, khách hàng1 nên truy cập máy chủ thông qua khách hàng1.foo.flar.com, và khách hàng2 nên truy cập máy chủ thông qua khách hàng2.foo.flar.com.

Hơn nữa, một khách hàng phải được ngăn truy cập vào máy chủ bằng tên miền phụ của một khách hàng khác. Vì vậy, nó là bất hợp pháp cho khách hàng1 yêu cầu khách hàng2.foo.flar.com, và một yêu cầu như vậy nên bị từ chối.

Tôi đã hy vọng rằng tôi có thể hoàn thành việc này ở lớp phiên thông qua mTLS và một số cách sử dụng chứng chỉ SAN thông minh, nhưng tôi gặp sự cố khi làm cho nó hoạt động bình thường.

Làm thế nào tôi có mọi thứ thiết lập

Tôi khá mới chơi với TLS, vì vậy rất nhiều điều này đến từ câu trả lời SO này về cấu hình SANbài viết này về cấu hình mTLS cơ bản.

Tôi đã bỏ qua một số thứ ở đây như tạo chứng chỉ CA và tạo CSR của máy khách và máy chủ để thử và giữ mọi thứ tập trung, nhưng có thể thêm nó nếu bạn muốn.

Tôi đã tạo chứng chỉ máy chủ bằng cách sử dụng một cái gì đó như:

openssl x509 \
  -yêu cầu \
  -extfile <(printf "subjectAltName=DNS:*.foo.flar.com") \
  -ngày 365 \
  -trong máy chủ.csr \ 
  -CA ca.crt \
  -CAkey ca.key \
  -CAcreateserial \
  -ra máy chủ.crt

Sau đó, tôi đã tạo chứng chỉ ứng dụng khách bằng cách sử dụng một cái gì đó như:

openssl x509 \
  -yêu cầu \
  -extfile <(printf "subjectAltName=DNS:customer1.foo.flar.com") \
  -ngày 365 \
  -trong client.csr \ 
  -CA ca.crt \
  -CAkey ca.key \
  -CAcreateserial \
  -ra client.crt

Máy chủ (được viết bằng Go) được định cấu hình để yêu cầu và xác minh các chứng chỉ ứng dụng khách.

Vấn đề

Vấn đề là khi tôi kiểm tra thiết lập này, kết nối thành công trong khi tôi cho rằng nó sẽ không thành công.

Nếu tôi có một khách hàng phát hành khách hàng1 cert gọi máy chủ tại khách hàng1.foo.flar.com, kết nối thành công.

Tuy nhiên, nếu tôi có một khách hàng phát hành khách hàng1 cert gọi máy chủ tại khách hàng2.foo.flar.com, kết nối đó cũng thành công khi tôi cho rằng nó sẽ thất bại.

Tôi đã hy vọng rằng, khi kiểm tra chứng chỉ của khách hàng, máy chủ sẽ thấy rằng khách hàng1 không có quyền truy cập vào khách hàng2..., và sẽ từ chối yêu cầu. Nhưng điều này dường như không xảy ra.

Ý tưởng?

Điểm:3
lá cờ se

Chứng chỉ ứng dụng khách chỉ chứa thông tin để xác thực người dùng. Bất kỳ hạn chế nào đối với những gì người dùng được xác thực có thể thực hiện (ủy quyền) bao gồm trang web nào chứng chỉ sẽ được chấp nhận đều tùy thuộc vào máy chủ kiểm tra chứng chỉ.

lá cờ pk
Joe
Vì vậy, việc đặt giá trị SAN trên chứng chỉ ứng dụng khách hoàn toàn là thông tin và không có tác dụng nào khác?
lá cờ pk
Joe
Trên thực tế, bây giờ tôi nghĩ về nó nhiều hơn, tôi đoán điều đó có lý. Vì bắt tay TLS xảy ra trước khi máy chủ biết tài nguyên nào đang được yêu cầu nên TLS sẽ không có cách nào thực hiện hành động có ý nghĩa.
Nikita Kipriyanov avatar
lá cờ za
Điều gì làm cho chứng chỉ trở thành duy nhất, điều gì đủ để phân biệt chứng chỉ với những chứng chỉ khác, tức là để xác thực? Giá trị "đã ký" thực tế trong chứng chỉ thứ là khóa công khai và thứ làm cho nó trở thành chứng chỉ là chữ ký CA bao trùm khóa này.Khóa rất quan trọng vì nó được sử dụng trong tiền điện tử bất đối xứng thực tế. Mọi thứ khác là "hoàn toàn là thông tin", tuy nhiên, một số yếu tố như DN dễ làm việc hơn và có thể chúng được tạo thành duy nhất, ví dụ: eglible để xác thực.
Steffen Ullrich avatar
lá cờ se
@NikitaKipriyanov: *Mọi thứ khác "hoàn toàn là thông tin"* - Tôi không đồng ý. Ngoài khóa công khai, còn có các hạn chế sử dụng khóa, mục đích chứng chỉ ... - có ý nghĩa và tiêu chuẩn được xác định rõ ràng về cách chúng nên được xử lý. Ngoài ra còn có SAN (và cũ hơn: CN) có ý nghĩa được tiêu chuẩn hóa và xác định rõ ràng trong ngữ cảnh chứng chỉ máy chủ và các giao thức như HTTPS, SMTP, IMAP, ... . Mặc dù vậy, không có tiêu chuẩn như vậy để hạn chế chứng chỉ ứng dụng khách đối với các miền.
Nikita Kipriyanov avatar
lá cờ za
*Xác thực* thực tế, được định nghĩa là quá trình đánh giá danh tính của tác nhân được gắn về mặt toán học với khóa và *chỉ* với khóa. Khóa riêng tư được giữ bí mật bởi một thực thể nào đó và vì một tác nhân có thể giải mã thách thức mà chúng tôi đã mã hóa bằng khóa chung của họ nên họ chính là thực thể này. Loại thực thể được ghi trong chứng chỉ và tính hợp lệ của thông tin này được ký bởi CA. Trường hợp web nhận dạng là tên của nó thì ta ký chung key và SAN. Trong trường hợp chứng chỉ ứng dụng khách, chúng tôi có thể sử dụng chính khóa đó làm mã định danh của thực thể, giống như SSH.
Nikita Kipriyanov avatar
lá cờ za
Mục đích của chứng chỉ, hạn chế sử dụng khóa, v.v., không đóng bất kỳ vai trò nào trong quy trình xác thực. Nếu thử thách được giải mã đúng cách, chúng tôi biết chắc chắn rằng phía bên kia có khóa riêng. Nếu một người có thể thiết lập danh tính của khóa chung (ví dụ: bằng cách sử dụng một số trường của chứng chỉ, chẳng hạn như SAN), thì họ thực sự đã xác thực phía bên kia. Tất cả các trường khác có nhiều thông tin hơn và liên quan đến ủy quyền. Và bạn đã đúng (trong câu trả lời), việc họ có thể sử dụng thông tin đó hay không là tùy thuộc vào bên kia.

Đă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.