Tôi đang tạo một CSR sẽ được xử lý bởi máy chủ của tôi. Nó cần đặt subjectNameAlt để máy chủ có thể xử lý nó. Tôi đã tìm kiếm xa và rộng, và chỉ tìm thấy làm thế nào để làm điều đó với certs X509 bình thường, không phải X509_REQ. Làm thế nào tôi có thể làm điều này (với C và OpenSSL. I.e. Tôi cần tương đương với X509_get_ext_d2i
nhưng đối với X509_REQ
)?Làm cách nào để thêm tiện ích subjectNameAlt vào X509_REQ?
7
A
Trả lời
10
Lập trình
Hãy xem tệp demos/x509/mkreq.c
đi kèm với OpenSSL. Nó tạo một yêu cầu và thêm địa chỉ email làm tên thay thế. Stripped xuống nó như sau:
exts = sk_X509_EXTENSION_new_null();
add_ext(exts, NID_subject_alt_name, "email:[email protected]");
X509_REQ_add_extensions(x, exts);
sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free);
Các add_ext
được thực hiện như thế này:
int add_ext(STACK_OF(X509_EXTENSION) *sk, int nid, char *value) {
X509_EXTENSION *ex;
ex = X509V3_EXT_conf_nid(NULL, NULL, nid, value);
if (!ex)
return 0;
sk_X509_EXTENSION_push(sk, ex);
return 1;
}
Từ dòng lệnh
tôi để lại phần này tại chỗ cho người khác, mặc dù OP yêu cầu một API.
https://wiki.cacert.org/FAQ/subjectAltName khuyên để sao chép các tập tin openssl.cnf
đến một openssl-san.cnf
tập tin tạm thời và sau đó chỉnh sửa đó như thế này:
[req]
req_extensions = v3_req
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = host1.yourdomain.tld
DNS.2 = host2.yourdomain.tld
Các vấn đề liên quan
- 1. Làm cách nào để thêm tiện ích JavaScript vào blog được lưu trữ trên Wordpress.com?
- 2. Làm cách nào để thêm trình xử lý sự kiện CSS AnimationEnd vào tiện ích GWT?
- 3. Qt: Cách thêm tiện ích vào bên phải của QStatusBar
- 4. Cách thêm tiện ích vào header.php trong wordpress?
- 5. tự động thêm ảnh vào tiện ích con thư viện
- 6. Thêm liên kết web vào tiện ích TextView
- 7. API tiện ích/tiện ích mở rộng Gmail - cách thêm nút vào thanh công cụ soạn thư?
- 8. Làm cách nào để thêm nút mới trong tiện ích bộ chọn ngày trong Android?
- 9. Thêm tiện ích mở rộng vào URL: Đường ray
- 10. Thêm NaCl vào Tiện ích mở rộng của Chrome
- 11. Cách tạo tiện ích chrome để thêm bảng điều khiển vào cửa sổ gmail?
- 12. Làm cách nào để thêm tiện ích quản trị nội tuyến tùy chỉnh trong Django?
- 13. Làm cách nào để buộc Facebook JS-SDK hiển thị các tiện ích được thêm động?
- 14. Làm cách nào để thêm trình xử lý giao thức vào firefox từ tiện ích mở rộng
- 15. Magento: Làm cách nào để đặt tiện ích vào bố cục xml?
- 16. Làm cách nào để bạn đăng nhập vào Firebug từ tiện ích mở rộng?
- 17. Làm cách nào để đặt tiện ích con vào ô CellTable?
- 18. Làm cách nào để ngăn tiện ích 'gem' truy cập vào thư mục chính của tôi?
- 19. Cách cập nhật tiện ích ứng dụng vào nửa đêm?
- 20. Làm thế nào để bạn đầu vào đường ống thông qua grep để tiện ích khác?
- 21. Cách thêm tiện ích vào màn hình chính Android từ ứng dụng của tôi?
- 22. Tải JQuery vào tiện ích của Chrome?
- 23. Chèn hình ảnh vào tiện ích chrome
- 24. làm thế nào để thêm một hệ thống gọi/tiện ích trong xv6
- 25. jQuery trong tiện ích
- 26. cách thêm tiện ích mở rộng đã tải xuống vào yii 1.11?
- 27. Gridster xóa tiện ích bằng cách kéo vào div
- 28. QT Cách nhúng ứng dụng vào tiện ích QT
- 29. GWT: Làm cách nào để xóa chỉ báo tiêu điểm của tiện ích Canvas?
- 30. Làm cách nào để bật tiện ích mở rộng mbstring trên PHP 5, máy chủ Fedora
Tôi muốn làm điều này thông qua c, không thông qua vỏ hoặc hệ thống tập tin. – chacham15
Tuyệt vời! Tôi đã tìm kiếm điều này hàng giờ! – chacham15
Làm cách nào để chúng tôi có thể thêm tiện ích mở rộng đa giá trị như trong [alt_names], sử dụng c theo lập trình? – karim