Сначала определите правильный домашний каталог Jenkins. Перейдите в «Управление Jenkins», а затем «Информация о системе». Найдите значение JENKINS_HOME
.
Далее войдите в Jenkins через SSH и перейдите в этот каталог. Файл с именем credentials.xml
будет содержать ваши секреты.
Найдите идентификатор вашего сертификата (например, в URL):
Наконец, запустите консоль сценария вашего экземпляра Jenkins (доступно по URL-адресу /script
или через «Управление Jenkins» -> «Консоль сценария») и выполните этот сценарий:
import com.cloudbees.plugins.credentials.*
import hudson.security.*
import java.security.*
import javax.xml.bind.DatatypeConverter
def creds = CredentialsMatchers
.firstOrNull(
CredentialsProvider
.lookupCredentials(
Credentials.class,
Jenkins.getActiveInstance(),
ACL.SYSTEM,
Collections.emptyList()
),
CredentialsMatchers.withId("9X9X99XX-XX9X-9X99-9X9X-9X9X9999XXX9")
)
// This will print a decrypted password
def password = creds.password
println password
// This will print all the available aliases
creds.keyStore.aliases().each { println it }
// Imagine, the alias you need is myapp.
// Get JVM representation of you certificate and key
def cert = creds.keyStore.getEntry("myapp", new KeyStore.PasswordProtection(password.toCharArray())).certificate
def privKey = creds.keyStore.getEntry("myapp", new KeyStore.PasswordProtection(password.toCharArray())).privateKey
// Format certificate and key
certpem = "-----BEGIN CERTIFICATE-----\n" +
DatatypeConverter.printBase64Binary(cert.encoded) +
"\n-----END CERTIFICATE-----\n";
keypem = "-----BEGIN RSA PRIVATE KEY-----\n" +
DatatypeConverter.printBase64Binary(privKey.encoded) +
"\n-----END RSA PRIVATE KEY-----\n";
// Print them
println certpem
println keypem
Кстати, вы можете найти свои закодированные учетные данные по идентификатору в credentials.xml
в доме Дженинса. Это должно выглядеть так:
<com.cloudbees.plugins.credentials.impl.CertificateCredentialsImpl>
<scope>GLOBAL</scope>
<id>9X9X99XX-XX9X-9X99-9X9X-9X9X9999XXX9</id>
<description>App signing certificate</description>
<keyStoreSource class="com.cloudbees.plugins.credentials.impl.CertificateCredentialsImpl$UploadedKeyStoreSource">
<uploadedKeystoreBytes>{ENCRYPTED_CERTIFICATE}</uploadedKeystoreBytes>
</keyStoreSource>
<password>{ENCRYPTED_PASSWORD}</password>
</com.cloudbees.plugins.credentials.impl.CertificateCredentialsImpl>