Я немного застрял, пытаясь сгенерировать сертификаты для Windows 2012R2 AD CS CA с использованием openSSL.
Мой сценарий bat запрашивает некоторые входные данные и использует их для создания файла .cnf для этого конкретного запроса. Когда я запускаю скрипт и открываю файл .cnf, я вижу следующее, которое кажется правильным:
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = US
stateOrProvinceName = Michigan
localityName = Detroit
organizationName = LEI
commonName = nas.lei.com
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = nas.lei.com
DNS.2 = 192.168.1.15
DNS.3 =
Пока все хорошо, после того, как сценарий bat сгенерирует этот файл, он вызывает следующую команду openSSL:
openssl req -out TEMP/%_CNAME%.req -newkey rsa:2048 -nodes -keyout TEMP/%_CNAME%.key -config TEMP/%_CNAME%.cnf
OpenSSL делает это и начинает выдавать мне следующий вывод:
----
You are about to based to enter information that will be incorporated into your certificate request.
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----
US []:
Michigan []:
etc...
Здесь все идет боком. Если я просто войду через поля, приняв значения по умолчанию из файла .cnf, я получу следующее:
error, no objects specified in config file. Problems making Certificate Request
Теперь, если я вернусь и не просто введу свои значения по умолчанию, скажем, я установил следующее:
US []: US
Затем он принимает мои файлы .cnf, не генерирует ошибку, но генерирует недопустимый CSR, единственными элементами, которые отображаются в CSR в этом случае, будут Country = US.
Я не могу разобраться в этом, я думал, что это проблема с кодировкой, но когда я проверяю файл в блокноте ++, он закодирован в UTF-8. У кого-нибудь есть предложения?
Вот раздел сценария bat, который генерирует файл .cnf:
REM Create .cnf file
@echo off
@echo [ req ]> TEMP/%_CNAME%.cnf
@echo default_bits = 2048>> TEMP/%_CNAME%.cnf
@echo distinguished_name = req_distinguished_name>> TEMP/%_CNAME%.cnf
@echo req_extensions = req_ext>> TEMP/%_CNAME%.cnf
@echo [ req_distinguished_name ]>> TEMP/%_CNAME%.cnf
@echo countryName = US>> TEMP/%_CNAME%.cnf
@echo stateOrProvinceName = Michigan>> TEMP/%_CNAME%.cnf
@echo localityName = Detroit>> TEMP/%_CNAME%.cnf
@echo organizationName = LEI>> TEMP/%_CNAME%.cnf
@echo commonName = %_DNS%>> TEMP/%_CNAME%.cnf
@echo [ req_ext ]>> TEMP/%_CNAME%.cnf
@echo subjectAltName = @alt_names>> TEMP/%_CNAME%.cnf
@echo [alt_names]>> TEMP/%_CNAME%.cnf
@echo DNS.1 = %_DNS%>> TEMP/%_CNAME%.cnf
@echo DNS.2 = %_DNS2%>> TEMP/%_CNAME%.cnf
@echo DNS.3 = %_DNS3%>> TEMP/%_CNAME%.cnf
Параметры, которые вы использовали, представляют собой подсказки, они определены следующим образом, и вы можете оставить их на этих значениях:
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
commonName = Common Name (eg, your name or your server\'s hostname)
Вам следует переименовать эти параметры:
countryName = US
stateOrProvinceName = Michigan
localityName = Detroit
organizationName = LEI
commonName = nas.lei.com
В:
countryName_default = US
stateOrProvinceName_default = Michigan
localityName_default = Detroit
0.organizationName_default = LEI
commonName_default = nas.lei.com
найти openssl.cnf
в вашей системе и просмотрите его: