Создан самозаверяющий сертификат, но файл ключа работает неправильно - PullRequest
0 голосов
/ 25 июня 2019

1) Сгенерированный самоподписанный сертификат на Centos 7.4 с отличными ответами на Как создать самоподписанный сертификат с OpenSSL .

2) Когда я говорю контейнеру Jenkins использовать их, он перестает работать, говоря, что не может прочитать файл .key.

3) Проверен файл .key с помощью openssl, он действителен, но ключ, отображаемый при этой проверке, НЕ совпадает с ключом .key

4) Копировал отображаемый ключ в новый файл, велел Дженкинсу использовать его. Это работает.

Почему ключ, сгенерированный openssl, не работает, а тот, который отображается при проверке openssl, имеет значение?

Точные шаги:

cd /etc/pki/tls/certs
vim openssl-config.conf
###openssl-config.conf file I created
[ req ]
default_bits        = 2048
default_keyfile     = server-key.pem
distinguished_name  = subject
req_extensions      = req_ext
x509_extensions     = x509_ext
string_mask         = utf8only
prompt              = no

[ subject ]
countryName         = countryA
localityName        = cityB
organizationName    = companyC
commonName          = server-nameD
emailAddress        = emailE

[ x509_ext ]
subjectKeyIdentifier        = hash
authorityKeyIdentifier    = keyid,issuer

basicConstraints        = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

[ req_ext ]
subjectKeyIdentifier        = hash
basicConstraints        = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

[ alternate_names ]
DNS.1       = DNS-name-1
DNS.2       = DNS-name-2
DNS.3       = DNS-name-3
DNS.4       = DNS-name-4
DNS.5       = DNS-name-5
DNS.6       = DNS-name-6
DNS.7       = DNS-name-7

openssl req -config ./openssl-config.conf -new -x509 -sha256 -newkey rsa:4096 -nodes -keyout certificate.key.pem -days 365 -out certificate.cert.pem

openssl rsa -in certificate.key.pem -check vim fixed-key.key (paste in the key displayed by above command)

На первый взгляд старый и новый ключи выглядят практически одинаково, первый начинается с

-----BEGIN PRIVATE KEY----- MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDEzhA5iBOLImBw

В то время как новый, рабочий начинается с

-----BEGIN RSA PRIVATE KEY----- MIIJKQIBAAKCAgEAxM4QOYgTiyJgcBv5zg2qZjpLINt6fmub3JbIVmFaHKeC8Xvp

Как видите, у первого нет RSA в первой строке, но добавление RSA в первую и последнюю строку в правильном месте не "исправляет" файл ключа. Старый файл имеет длину 3272 байта, новый - 3243 байта.

Что я делаю не так?

Я ожидал, что ключ будет работать или поврежден файл, но я не могу «исправить» его, снова отобразив через проверку openssl.

1 Ответ

0 голосов
/ 26 июня 2019

В этом нет ничего плохого.Команда, которую вы используете для генерации ключа, выводит его в формате PKCS # 8.При запуске команды openssl rsa -in certificate.cert.pem ключ преобразуется в формат PKCS # 1.Это тот же ключ, только в другом формате.

Дженкинс, вероятно, не поддерживает PKCS # 8 , поэтому вы должны использовать формат PKCS # 1.

Вы можете найти разницу между PKCS # 1 и PKCS # 8 здесь: PKCS # 1 и формат PKCS # 8 для закрытого ключа RSA

Если вы хотите увидеть разницу самостоятельно, выможно использовать следующие команды:

openssl asn1parse -in certificate.cert.pem

и

openssl asn1parse -in fixed-key.key

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...