Tôi muốn định cấu hình OpenSSL để khi chạy openssl req -new
để tạo yêu cầu ký chứng chỉ mới, tôi được nhắc cho bất kỳ tên chủ đề thay thế nào được đưa vào CSR.
Tôi đã thêm dòng này vào [req_attributes]
phần của tôi openssl.cnf
:
subjectAltName = Alternative subject names
Điều này có hiệu ứng mong muốn mà bây giờ tôi được nhắc cho SAN khi tạo CSR:
$ openssl req -new -out test.csr -key ./test.key <<<
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [New York]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Example Co]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:test.example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Alternative subject names []:DNS:alt1.example.com
Trong ví dụ trên, tôi đã nhập DNS:alt1.example.com
khi được nhắc cho SAN.
Vấn đề là CSR kết quả dường như không được định dạng tốt:
$ openssl req -text -in ./test.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, ST=New York, O=The Banes, CN=test.thebanes.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
[...]
Exponent: 65537 (0x10001)
Attributes:
X509v3 Subject Alternative Name:unable to print attribute
OpenSSL phàn nàn rằng nó không thể in giá trị của thuộc tính Tên thay thế chủ đề. Từ các ví dụ trực tuyến (nơi mọi người mã hóa SAN vào openssl.cnf của họ, thay vì nhắc nhở họ tương tác như tôi muốn), tôi hy vọng sẽ thấy điều này thay vào đó:
Attributes:
X509v3 Subject Alternative Name:
DNS:alt1.example.com
Vậy, làm thế nào tôi có thể tạo ra một CSR được hình thành tốt với các SAN được nhắc tương tác?
openssl
- bạn sẽ cần một tập lệnh sẽ xử lý tệp cấu hình của nó cho điều đó. :( PS Một giải pháp đã được chứng minh để thực hiện điều đó theo cách không tương tác có tại đây: stackoverflow.com/a/9158662/2693875