Trong khi openssl x509
sử dụng -extfile
, lệnh bạn đang sử dụng openssl req
, cần -config
chỉ định tệp cấu hình.
Vì vậy, bạn có thể sử dụng một lệnh như thế này:
openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \
-days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt
Các lời nhắc thông thường cho các bit tên phân biệt được xác định trong tệp cấu hình mặc định (có thể có /System/Library/OpenSSL/openssl.cnf
trên OS X), nhưng tệp này không được xử lý khi bạn sử dụng -config
, do đó tệp cấu hình của bạn cũng phải bao gồm một số bit DN. Do đó, các tham chiếu ở trên cert_config
có thể trông giống như thế này:
[ req ]
prompt = no
distinguished_name = my dn
[ my dn ]
# The bare minimum is probably a commonName
commonName = secure.example.com
countryName = XX
localityName = Fun Land
organizationName = MyCo LLC LTD INC (d.b.a. OurCo)
organizationalUnitName = SSL Dept.
stateOrProvinceName = YY
emailAddress = ssl-admin@example.com
name = John Doe
surname = Doe
givenName = John
initials = JXD
dnQualifier = some
[ my server exts ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
# 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth:
# extendedKeyUsage = serverAuth
# see x509v3_config for other extensions
Như đã nêu trong nhận xét, có lẽ bạn có thể bỏ qua hầu hết các trường DN. Đối với việc sử dụng HTTPS, tôi nghĩ rằng tất cả những gì bạn cần là một CN phù hợp với tên máy chủ của bạn.
Các Tên phân biệt và mục Thuộc tính phần Format của req (1) cho thấy cách bạn có thể thay đổi cấu hình trên để nhắc cho các giá trị (và cung cấp các giá trị mặc định) nếu bạn muốn tạo ra nhiều tương tự như giấy chứng nhận / yêu cầu.
Nếu bạn cần các phần mở rộng chứng chỉ khác, hãy kiểm tra
x509v3_config (5)
để biết các bit khác bạn có thể chỉ định trong phần mở rộng.