2012-12-30 30 views
5

Như được chỉ ra trong số answer của mình để Hostname/IP doesn't match certificate's altname Node.js thực hiện xác minh thành công chứng chỉ TLS trên tên máy chủ khi tên máy chủ được yêu cầu được cung cấp làm Tên thường dùng (CN) của chứng chỉ.Tại sao Node.js chấp nhận địa chỉ IP trong các chứng chỉ chỉ cho SAN chứ không phải cho CN?

Request : localhost 
Common Name: localhost 
=> Success 

Bây giờ khi tôi cố gắng cùng một địa chỉ IP, xác minh thất bại:

Request : 192.168.178.31 
Common Name: 192.168.178.31 
=> Fail 

Nó chỉ hoạt động nếu tôi chỉ định địa chỉ IP như Subject Alternative Name (SAN):

Request     : 192.168.178.31 
Common Name    : 192.168.178.31 
Subject Alternative Name: 192.168.178.31 
=> Success 

Như được mô tả trong answer đến IP address as hostname (CN) when creating a certificate? (HTTPS hostname wrong: should be <ipAddress>),

sử dụng địa chỉ IP trong chứng chỉ không được khuyến nghị [...].

Cách thay thế được đề xuất trong answer thành How are SSL certificate server names resolved/Can I add alternative names using keytool? để thêm địa chỉ IP làm SAN (mà lần lượt hoạt động trong Node.js).

Bây giờ câu hỏi của tôi là: Không được đề xuất không có nghĩa sai hoặc cấm. Có lý do cụ thể nào ngoại trừ là không được đề xuất rằng Node.js không hỗ trợ địa chỉ IP trong CN, hay tại sao nó sẽ là một rủi ro (bảo mật, bất cứ điều gì, ...) nếu nó đã làm?

+1

Tôi gặp sự cố tương tự. Cảm ơn bạn đã đăng nghiên cứu của bạn ở đây dưới hình thức dễ tiêu hóa như vậy - đã giúp tôi xác nhận những nghi ngờ của mình! –

+0

Tôi rất vui vì nó đã giúp bạn :-)) –

Trả lời

4

Việc thực hiện là chỉ phù hợp với HTTPS specification:

Trong một số trường hợp, các URI được quy định như một địa chỉ IP chứ không phải là một hostname. Trong trường hợp này, đối tượng iPAddress phải có mặt trong chứng chỉ và phải khớp chính xác với IP trong URI.

Khi tôi nói "không được đề xuất" trong câu trả lời mà bạn trích dẫn, đó là cách sử dụng địa chỉ IP nói chung khi sử dụng HTTPS. Một số trình duyệt cho phép bạn thoát khỏi nó, nhưng tôi cũng trích dẫn thông số ở đó, sử dụng từ "phải". Không cần phải nói rằng RFC có thẩm quyền hơn bất kỳ câu trả lời nào bạn sẽ tìm thấy ở đây.

Các vấn đề liên quan