星期三, 3月 13, 2019

取得 IBM HTTP Server KDB 密碼





前一陣子,有個客戶的 SSL 憑證到期了,想要更新憑證,卻忘了當時建立的密碼。這時候可能需要重新使用 IBM 的 iKeyMan 工具再建立一次 KDB 檔案。後來,我回顧一下 KDB 建立的過程似乎有建立一個 stash 檔案,這個檔案似乎就存著密碼。

在 IBM HTTP Server 的 Config 檔案中,針對這個 KDB 的存取並沒有再特別設定密碼。所以,可以假設 stash 內就存著密碼,而且 IBM HTTP Server 可以解開這組密碼。

於是,上網找了一下是否有還原的機制,後來果然發現了相關的文章,並且實際驗證一下。

1. 我在 CentOS 的環境下建立一個 stash_decrypt.pl 檔案,內容如下:

#!/usr/bin/perl
use strict;
die "Usage: $0 <stash file>n" if $#ARGV != 0;
my $file=$ARGV[0];
open(F,$file) || die "Can't open $file: $!";
my $stash;
read F,$stash,1024;
my @unstash=map { $_^0xf5 } unpack("C*",$stash);
foreach my $c (@unstash) {
 last if $c eq 0;
 printf "%c",$c;
}
printf "\n";
2. 將 KDB 的 key.sth 檔案複製到與 stash_decrypt.pl 目錄中
3. 修改 stash_decrypt.pl 的權限為可執行
4. 執行 ./stash_decrypt.pl key.sth



最後可以看到 key.sth 檔案的密碼內容。

[參考資料]
1. https://websphereapplicationservernotes.files.wordpress.com/2012/04/websphere-doctor-7-recover-kdb-password.pdf

沒有留言: