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.





Нет ничего плохого. Команда, которую вы используете для генерации ключа, выводит его в формате 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