Khách hàng của tôi sử dụng chứng chỉ tự ký cho một ứng dụng để làm việc. Để có thể làm việc, tôi phải cài đặt chứng chỉ gốc mà họ đã sử dụng để ký chứng chỉ.
Có thể định cấu hình chứng chỉ gốc để nó chỉ xác nhận đối với một tên miền?
Khách hàng của tôi sử dụng chứng chỉ tự ký cho một ứng dụng để làm việc. Để có thể làm việc, tôi phải cài đặt chứng chỉ gốc mà họ đã sử dụng để ký chứng chỉ.
Có thể định cấu hình chứng chỉ gốc để nó chỉ xác nhận đối với một tên miền?
Câu trả lời:
Không , ngụ ý trong việc tin tưởng chứng chỉ CA của khách hàng là sự tin tưởng vào mọi chứng chỉ được ký bởi CA.
Tôi không biết bất kỳ ứng dụng / thư viện nào có tùy chọn dễ dàng cho phép bạn là người dùng cuối chọn bạn sẽ tin tưởng khách hàng của mình hoặc bất kỳ chứng chỉ CA nào khác chỉ dành cho một số tên miền (phụ) nhất định, chỉ dành cho *. example.com và * .example.org và không có gì khác.
Mozilla có mối quan tâm tương tự về việc CA được chính phủ tài trợ hiện tại là một điểm chú ý mở và ví dụ Chrome có thêm kiểm tra để truy cập các trang web của Google, đó là cách chứng nhận * .google.com lừa đảo và sự thỏa hiệp của Diginotar CA trở nên công khai .
Nhưng ngay cả khi bạn không tin tưởng CA, bạn vẫn có thể nhập / tin tưởng một chứng chỉ máy chủ cụ thể được ký bởi CA đó, điều này sẽ ngăn cảnh báo SSL cho tên máy chủ trong chứng chỉ đó. Điều đó sẽ làm cho ứng dụng của bạn hoạt động mà không có lỗi hoặc khiếu nại.
Một tùy chọn không được sử dụng nhiều của tiêu chuẩn PKI X.509v3 là tiện ích mở rộng ràng buộc tên , cho phép chứng chỉ CA chứa danh sách trắng và danh sách đen của các mẫu tên miền được ủy quyền để cấp chứng chỉ.
Bạn có thể may mắn và khách hàng của bạn đã tự kiềm chế khi họ thiết lập cơ sở hạ tầng PKI của họ và bao gồm ràng buộc Tên đó trong chứng chỉ CA của họ. Sau đó, bạn có thể nhập chứng chỉ CA của họ trực tiếp và biết rằng nó chỉ có thể xác thực một phạm vi tên miền giới hạn.
example.com
hoặc *.ad.example.com
là hợp lệ. CA nội bộ của bạn cũng có thể cấp giấy chứng nhận cho *.example.bank
phép một cuộc tấn công trung gian tốt đẹp và rình mò thông tin ngân hàng trực tuyến của bạn.
@CryptoGuy đã có một câu trả lời khá hay ở đây, nhưng tôi muốn mở rộng về nó.
Để diễn dải:
Bạn có thể hạn chế CA bên thứ 3 tin cậy các chứng chỉ (từ CA đó) được cấp cho danh sách tên bạn muốn. Ngay cả khi CA bên thứ 3 không có tiện ích mở rộng ràng buộc tên, bạn vẫn có thể áp dụng chúng bằng cách sử dụng máy chủ CA nội bộ của riêng bạn thông qua chứng nhận chéo. Mẹo nhỏ là bạn ký CA bên thứ 3 bằng cách sử dụng CA nội bộ của bạn.
chứng chỉ SSL lá -> chứng chỉ chéo -> chứng chỉ CA của bạn -> chứng chỉ gốc nội bộ của bạn.
Và đây là cách bạn thực hiện công việc đó (sử dụng CA dòng lệnh OpenSSL)
Tạo một CA đơn giản
openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"
Bạn có thể bỏ qua việc tạo một CA trung gian
Tạo một yêu cầu CA trung gian, với các ràng buộc tên.
openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg
Với điều này trong ossl_domain_com.cfg
tập tin:
[ req ]
prompt=no
distinguished_name=req_distinguished_name
req_extensions=domain_ca
[ req_distinguished_name ]
CN=somedomain.com trust CA
[ domain_ca ]
basicConstraints=critical,CA:true,pathlen:1
nameConstraints=critical,permitted;DNS:.somedomain.com
Sau đó, ký tên miền trung gian CA với CA.
openssl x509 -req -in domain-ca.req -CA root-ca.crt -CAkey root-ca.key -sha256 -set_serial 1 -out domain-ca.crt -extensions domain_ca -extfile ossl_domain_com.cfg
Nếu bạn bỏ qua việc tạo trung gian, hãy sử dụng CA gốc của bạn để ký
Bây giờ hãy ký lại CA của tên miền ban đầu theo thẩm quyền của bạn, sử dụng chứng chỉ của họ. Bạn có thể thêm các phần mở rộng CA ở đây.
openssl x509 -in third_party_ca.crt -CA domain-ca.crt -CAkey domain-ca.key -set_serial 47 -sha256 -extensions domain_ca -extfile ossl_domain_com.cfg -out domain-cross-ca.crt
Bạn có thể cần sử dụng -x509-to-req
đối số để tạo một yêu cầu, mà bạn ký chính xác giống như cách trung gian ở trên.
Bây giờ, hãy thêm CA gốc, CA trung gian và tên miền chéo vào cơ sở dữ liệu tin cậy của trình duyệt của bạn.
basicConstraints
dòng trong tệp cấu hình dường như khiến phần mở rộng ràng buộc được đưa vào chứng chỉ hai lần, điều này khiến Firefox từ chối chứng chỉ với thông báo lỗi khó hiểu. Tôi nghĩ rằng nó có thể được gỡ bỏ một cách an toàn.
error with certificate to be certified - should be self signed
. Nó có nghĩa là gì và làm thế nào để giải quyết điều này? pastebin.ubfox.com/p/QHhpQh2N6J