Я создал секретный ключ/CSR из pyOpenSSL - фрагмент кода ниже:CSR представлен IIS ЦС не удается из-ASN1 значения
Ключ:
key = crypto.PKey()
key.generate_key(type, bits)
if os.path.exists(_keyfile):
print "Certificate file exists, aborting."
print " ", _keyfile
sys.exit(1)
else:
f = open(_keyfile, "w")
f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key))
f.close()
return key
КСО:
req = crypto.X509Req()
# Return an X509Name object representing the subject of the certificate.
req.get_subject().countryName = country
req.get_subject().stateOrProvinceName = state
req.get_subject().localityName = location
req.get_subject().organizationName = organisation
req.get_subject().organizationalUnitName = organisational_unit
req.get_subject().CN = nodename
# Add in extensions
#base_constraints = ([
# crypto.X509Extension("keyUsage", False, "Digital Signature, Non Repudiation, Key Encipherment"),
# crypto.X509Extension("basicConstraints", False, "CA:FALSE"),
#])
#x509_extensions = ([])
x509_extensions = []
# If there are SAN entries, append the base_constraints to include them.
if ss:
san_constraint = crypto.X509Extension("subjectAltName", False, ss)
x509_extensions.append(san_constraint)
req.add_extensions(x509_extensions)
# Set the public key of the certificate to pkey.
req.set_pubkey(key)
# Sign the certificate, using the key pkey and the message digest algorithm identified by the string digest.
req.sign(key, "sha1")
# Dump the certificate request req into a buffer string encoded with the type type.
if os.path.exists(_csrfile):
print "Certificate file exists, aborting."
print " ", _csrfile
sys.exit(1)
else:
f = open(_csrfile, "w")
f.write(crypto.dump_certificate_request(crypto.FILETYPE_PEM, req))
f.close()
Ошибка, которую я получаю от ИС IIS:
ASN1 плохой значение тега выполнено. 0x8009310b (АСН: 267)
В соответствии с этим Microsoft вызвано:
Это происходит, когда запрос сертификата сохраняется в виде файла в кодировке Unicode. Служба сертификатов Microsoft не поддерживает файлы с запросами файлов в кодировке Unicode. Поддерживается только кодировка ANSI.
Я знаю, что если я создам CSR из openssl в командной строке, он будет принят и выпущен веб-сервисом IIS CA RESTful без ошибок.
Я хочу знать, есть ли способ генерировать кодированные ANSI файлы из pyOpenSSL. Я не уверен, что это ключевой файл или CSR, который подписан с ключевым файлом, который вызывает проблемы.
Это исправлено - обновите исходный вопрос. Спасибо @yodatg – ilium007
@jww - сделано и спасибо – ilium007