Yêu cầu ký OpenSSL với phần mở rộng


8

Tôi đặt một CA tự ký nhỏ cho môi trường dev của tôi. Tôi muốn tạo nhiều chứng chỉ máy chủ khác nhau với các thuộc tính khác nhau. Cách tiếp cận của tôi là tạo một phần mở rộng cụ thể cho mỗi máy chủ. Tôi có một openssl.cnf lớn chứa các phần như thế này:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

Sau đó, khi tôi tạo csr của mình bằng cách opensslsử dụng các tham số -config myCustomOpenssl.cnf -reqexts server0_http. Khi tôi nhìn vào yêu cầu của tôi bằng cách sử dụng openssl req -text -noout -in myrequest.csrmọi thứ có vẻ hoàn hảo.

Tuy nhiên, sau khi tôi ký yêu cầu, phần "Sử dụng khóa mở rộng X509v3" và "Tên thay thế chủ đề X509v3" đã biến mất. Để khắc phục vấn đề này, tôi cũng đặt -extfile myCustomOpenssl.cnf -reqexts server0_httpcác tham số cho cuộc gọi ký kết openssl.

Đó có phải là hành vi dự kiến? Tôi luôn nghĩ rằng tệp csr một mình phải đủ để tạo chứng chỉ theo yêu cầu, tức là với tất cả các phần của nó. Cách hệ thống của tôi hoạt động ngay bây giờ là tôi nhận được một chứng chỉ với các phần bị thiếu. Để có được chứng chỉ như tôi muốn, tôi phải cung cấp tệp csr và phần tương ứng từ tệp cấu hình openssl mà tôi đã sử dụng để tạo yêu cầu. Điều này không có vấn đề gì đối với thiết lập nhỏ của tôi, nhưng điều này trở nên khá lộn xộn nếu tôi trở thành một CA lớn hơn. Nó được cho là như thế hay tôi đang sử dụng openssl không chính xác?

Câu trả lời:


7

Tìm thấy rồi! Những gì tôi mô tả là hành vi dự kiến ​​bình thường của openssl. Theo mặc định, tiện ích mở rộng tùy chỉnh không được sao chép vào chứng chỉ.

Để tạo openssl sao chép các phần mở rộng được yêu cầu vào chứng chỉ, người ta phải chỉ định copy_extensions = copycho việc ký. Trong cài đặt vanilla, điều này có nghĩa là dòng này phải được thêm vào phần default_CAtrong openssl.cnf.

Trong các openssl.cnftàu có (ít nhất) Centos, dòng đã được đưa vào như một nhận xét và mang theo cảnh báo "sử dụng một cách thận trọng". Người yêu cầu có thể lạm dụng điều này để khiến bạn cấp chứng chỉ CA, nếu bạn không cẩn thận.

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.