Thêm tên thay thế chủ đề (SAN) vào Yêu cầu ký chứng chỉ (CSR) hiện có


9

Có ai có thể cho tôi biết làm thế nào tôi thêm một số Tên thay thế chủ đề vào CSR hiện tại không?

Tôi không nói về việc tạo CSR bằng SAN hoặc thêm SAN khi ký - Tôi biết cách thực hiện cả hai điều này.

Bối cảnh: Vấn đề chúng tôi gặp phải là khung gầm lưỡi HP, cho phép bạn tạo CSR, nhưng chúng chỉ cho phép một SAN duy nhất. Chúng tôi không thể sử dụng CSR được tạo ở nơi khác vì chúng tôi không thể sử dụng chứng chỉ kết quả vì không có cách nào (mà tôi có thể tìm thấy) để tải khóa lên khung lưỡi cắt.

Quy trình tiêu chuẩn của CA của chúng tôi không cho phép thêm SAN đang ký thời gian. Họ sẵn sàng thử nghiệm, tuy nhiên tôi đang cố gắng tìm giải pháp cho chúng tôi vì điều này có nghĩa là chúng tôi sẽ không phải dựa vào họ có quy trình không chuẩn cho chúng tôi - theo kinh nghiệm của tôi nếu họ cần sử dụng quy trình không chuẩn cuộc sống cuối cùng sẽ gặp khó khăn. Ví dụ: khi một nhân viên biết quy trình không chuẩn không có mặt do nghỉ phép, v.v.

Phương pháp hiện tại là kết nối với quản trị viên trên bo mạch thông qua gui web và tạo CSR với một CN duy nhất.

Gui web chỉ cho phép một SAN duy nhất trong CSR.

Sau đó, chúng tôi tự ký tên với khổ thơ sau trong cấu hình openssl:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

Chứng chỉ kết quả có thêm SAN.


Hiện tại bạn đang tạo ra các certs trên khung gầm như thế nào? Bạn đang sử dụng phương pháp nào để kết nối, v.v.
Eli

Khung xe là một c7000. Vâng, chúng tôi hiện đang tạo CSR trên khung và thêm SAN vào thời điểm ký, nhưng đó là cho các certs tự ký.
Jason Tan

Hiện tại bạn đang sử dụng phương pháp nào để kết nối với nó và quy trình tạo certs cho nó là gì?
Eli

Tôi đã chỉnh sửa câu hỏi chính để bao gồm phương pháp hiện tại.
Jason Tan

1
Bạn có thể nhập Chứng chỉ & Khóa riêng nếu bạn tạo nó trên một máy khác và xuất nó không?
Clint

Câu trả lời:


15

Nếu khung gầm của bạn không hỗ trợ thêm SAN, bạn sẽ cần lấy chìa khóa ra khỏi khung và tạo CSR với openssl.

Hãy chắc chắn rằng không req_extensions = v3_reqbị thiếu trong [ req ]phần.

Thêm subjectAltNamevào [ v3_req ]phần.

Tạo CSR mới.

openssl req -new -key extracted_c7000.key -out your_new.csr

Bạn không thể chỉnh sửa CSR hiện có.


Những gì cakemox nói. Nếu bạn có thể chỉnh sửa chứng chỉ (nghĩa là CSR đã ký) sau khi được ký, nó sẽ đánh bại toàn bộ mục đích của các cơ quan có thẩm quyền.
MadHatter

Tôi không muốn chỉnh sửa CSR sau khi nó được ký - như bạn nói là đánh bại con rối. Tôi muốn chỉnh sửa CSR sau khi được tạo, nhưng TRƯỚC KHI nó đã được ký. Chắc chắn có thể chỉnh sửa các phần của CSR trước khi đăng nhập bằng openssl.
Jason Tan

Nếu tôi có thể tải về khóa, tôi sẽ. Xin lỗi tôi đã không đề cập đến điều đó trong câu hỏi ban đầu, nhưng tôi không thể tìm thấy để tải xuống khóa. Tôi rất vui khi trả tiền thưởng cho ai đó có thể cho tôi biết cách tải xuống khóa.
Jason Tan

FYI - Chắc chắn có thể chỉnh sửa các phần của CSR trước khi ký bằng cách sử dụng openssl, đặc biệt là tùy chọn "openssl req -subj". Tuy nhiên, điều này sẽ không xa như tôi có thể nói thêm phần mở rộng SAN v3, nó sẽ chỉ cho phép bạn chỉ định một dòng chủ đề mới bao gồm các CN bổ sung.
Jason Tan

2
CSR được ký bằng khóa riêng của máy, vì vậy bạn không thể chỉnh sửa nó sau khi được tạo (nếu không nó sẽ không được ký nữa). Tuy nhiên, CA có thể chỉnh sửa các trường được đặt trong chứng chỉ công khai; đây là cách duy nhất để thay đổi trường SAN (mà bạn không kiểm soát được nếu bạn gửi nó tới CA công cộng).
Chris S

0

Lưu ý quan trọng: Tất cả những điều này có phần suy đoán, vì vậy nếu bạn đang tìm hiểu sâu về mã và nó không đồng ý với những gì tôi đang nói, hãy tin vào mã. Tôi không phải là chuyên gia CA, tôi chỉ chơi một cái trên TV. Mà nói:

Là một tính năng của CSR, nó sẽ rất khó khăn. Bước cuối cùng trong việc tạo CSR theo lập trình là băm mọi thứ bạn đã tạo và sau đó ký tên bằng khóa riêng. Vì vậy, trong khi bạn có thể thêm các thuộc tính đó vào văn bản của CSR, chữ ký sẽ không khớp với nội dung, vì vậy không có CA nào ký tên.

Tuy nhiên, trong trường hợp của bạn, bạn kiểm soát (hoặc ít nhất là tiếp xúc với) CA. Điều này cung cấp cho bạn hai tùy chọn:

  1. Bạn có thể hướng dẫn CA bỏ qua chữ ký trên CSR và dù sao cũng phải cấp chứng chỉ.
  2. Bạn có thể yêu cầu CA cấp một chứng chỉ khác với những gì được yêu cầu (ví dụ: bằng cách thêm thuộc tính).

Trong số này, # 1 dường như là dễ nhất. Bạn sẽ cần phải phá vỡ con dấu rõ ràng giả mạo trên OpenSSL để làm cho nó thực hiện điều này, nhưng nó có một số chức năng sẽ làm cho khá dễ dàng hơn một chút. Tôi sẽ bắt đầu với asn1parse, nó sẽ chỉ cho bạn cách phá vỡ CSR.


Trong nghiên cứu sâu hơn, tùy chọn # 2 thực sự cũng khá đơn giản và được thực hiện bởi một số CA (ví dụ: để thêm site.comvào một www.site.comchứng chỉ dưới dạng SAN).
BMDan

0

Mặc dù câu trả lời của cakemox chắc chắn là dễ nhất nếu bạn bằng cách nào đó có thể nhận được một bản sao của khóa riêng, có một cách khác nếu bạn không thể ký lại CSR bằng cách sử dụng chứng chỉ "Đại lý tuyển sinh".

Bài đăng trên blog css-security.com này có tất cả các chi tiết gritty nitty. Nhưng tổng quan cấp cao của quy trình trông như thế này:

  • Có được chứng chỉ đại lý tuyển sinh
  • Sửa đổi mẫu chứng chỉ SSL để yêu cầu chứng chỉ EA để cấp
  • Có được CSR cần thông tin SAN
  • Sử dụng chứng chỉ EA để từ chức CSR trong khi thêm thông tin SAN

Khi tôi thử cá nhân này, tôi khá chắc chắn rằng tôi đã bỏ qua phần về sửa đổi mẫu chứng chỉ. Giả sử bạn có thể tạo chứng chỉ Đại lý tuyển sinh cho chính mình, quy trình thực tế trông giống như thế này.

Tạo một san.inf với thông tin mở rộng SAN trong đó

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

Ký lại yêu cầu

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

Gửi yêu cầu đã sửa

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

Và sau đó tiến hành như bình thường với quá trình phát hành.

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.