У меня тоже была эта проблема - и это сложно понять.Поскольку PDI является приложением Java, оно не очень хорошо сочетается со встроенными в операционную систему процессами управления сертификатами или параметрами, позволяющими игнорировать проверку сертификатов.Хитрость заключается в том, чтобы добавить сертификат в хранилище ключей Java, используя keytool
. Мне пришлось решить эту проблему для Windows, так что вот сценарий PowerShell, но вы должны быть в состоянии адаптировать идею для оболочки при необходимости.Кроме того, пароль по умолчанию для хранилища сертификатов Java - «changeit» - это не type-o или заполнитель.
Param (
[Parameter(
Mandatory = $False,
ValueFromPipeline = $False,
ValueFromPipelineByPropertyName = $False,
HelpMessage = 'Take action!')]
[switch]$doit
)
## Find the JRE folders
$jre_list = New-Object System.Collections.Generic.List[System.Object];
$program_folders = @('C:\Program Files\Java', 'C:\Program Files (x86)\Java');
ForEach ($folder in $program_folders) {
$jre_folders = Get-ChildItem -Path $folder -ErrorAction SilentlyContinue | Where-Object {$_.Name -like 'jre*'};
ForEach ($jre in $jre_folders) {
if ((Get-ChildItem -Path $($jre.FullName) -Recurse -Filter 'keytool.exe').Count -gt 0) {
$jre_list.Add($jre);
}
}
}
## Find the certificate files
$certroot = $PSScriptRoot;
$cert_files = Get-ChildItem -Path $certroot | Where-Object {$_.Name -match '^.+\.crt$' };
ForEach ($jre in $jre_list) {
Write-Host "`n == Found JRE @ $($jre.FullName)";
$keytool = "$($jre.FullName)\bin\keytool.exe";
$keystore = "$($jre.FullName)\lib\security\cacerts";
$cmd_list = "& '$keytool' -keystore '$keystore' -storepass changeit -list";
$existing_trusts = (Invoke-Expression -Command $cmd_list).Replace('\n', '\r\n');
ForEach ($cert in $cert_files) {
$file = "$certroot\$cert";
$alias = ($cert.Name).Replace('.crt', '');
Write-Host " >> $cert ($alias)";
ForEach ($item in $existing_trusts) {
$trust = $item.split(',')[0];
if ($trust -match $alias -or $trust -match '*.my.domain.com') {
if ($doit) {
## Remove existing entries
Write-Host " -- Removing entry for '$trust'";
$cmd_delete = ("& '$keytool' -keystore '$keystore' -storepass changeit -delete -alias $trust -noprompt").Replace("'", '"');
(Invoke-Expression -Command $cmd_delete -ErrorVariable stderr) 2>&1 | Out-Null
if (-Not $stderr) {
Write-Host ' Success';
}
Remove-Variable stderr -ErrorAction SilentlyContinue;
}
else {
Write-Host " ++ Existing entry in keystore: '$trust'";
}
}
}
if ($doit) {
## Add new entries
Write-Host " ++ Adding entry for '$alias'";
$cmd_add = ("& '$keytool' -keystore '$keystore' -storepass changeit -import -file '$file' -alias $alias -trustcacerts -noprompt").Replace("'", '"');
(Invoke-Expression -Command $cmd_add -ErrorVariable stderr) 2>&1 | Out-Null
if (-Not $stderr) {
Write-Host ' Success';
}
Remove-Variable stderr -ErrorAction SilentlyContinue;
}
}
Write-Host ' ';
}