はじめに
SAP ABAPシステムに対して、SAP Note を**オフライン(SAPNETの接続なし)**で適用する場合、Tr-cd:SNOTE
向けにテキストベースのNoteをサポートポータルからダウンロードする必要がある。
Noteが1、2個であれば手動ダウンロードでも問題ないが、10個、20個だと手動ダウンロードは時間と手間がかかりつらい。
そこで、wget
と SAP Passport(実態はクライアント証明書)を利用して、コマンドベースでNoteを取得する方法を探した。
※2018/01現在、有効な方法であることを確認
作業環境
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
# rpm -qa | grep openssl
openssl-1.0.2k-8.el7.x86_64
# rpm -qa | grep wget
wget-1.14-15.el7.x86_64
事前準備
SAP Passport の入手
以下のサイトにアクセスし、SAP Passportを入手する。
(すでに発行済みでPKCS#12形式のクライアント証明書を保持している場合は省略可)
https://launchpad.support.sap.com/#/sappassport
※Sユーザでのログイン必須
SAP Passport を作業環境へアップロード
入手に成功するとPKCS#12形式でクライアント証明書がローカルPCにダウンロードされる。
ダウンロードされたファイル(<SID>.pfx
)を作業する環境にアップロードする。
※今回はLinux環境を使用しているが、Windowsでも同様のことは可能。なはず。。。(未検証)
証明書をPKCS#12形式からPEMに変換
man wget
によると、wget
はクライアント証明書、CA証明書、秘密鍵をそれぞれファイルで指定する必要がある。
形式はデフォルトがPEM
、オプション指定でDER
にも対応しているようだが、今回はデフォルトのPEM
を利用することとする。
# SAP Passport ファイルの確認
$ ls -l
-rw-r--r--. 1 user uesr 3100 Jan 23 13:08 <SID>.pfx
# クライアント証明書
$ openssl pkcs12 -in <SID>.pfx -nokeys -clcerts -out client_cert.crt.pem
Enter Import Password: <SAP Passport入手時に入力したパスワード>
MAC verified OK
# CA証明書
$ openssl pkcs12 -in <SID>.pfx -nokeys -cacerts -out ca_cert.crt.pem
Enter Import Password: <SAP Passport入手時に入力したパスワード>
MAC verified OK
# 秘密鍵
$ openssl pkcs12 -in <SID>.pfx -nocerts -nodes -out client_cert.key.pem
Enter Import Password: <SAP Passport入手時に入力したパスワード>
MAC verified OK
SAP Note(SNOTE向け)のダウンロード
<NoteNo>
: ダウンロードするNote番号を指定する。
$ wget --certificate=client_cert.crt.pem --private-key=client_cert.key.pem --ca-certificate=ca_cert.crt.pem -O <NoteNo>.SAR https://apps.support.sap.com/sap/support/lp/notes/hcp/down4snote/down4snote.htm?iv_num=<NoteNo>&sap-language=EN
仕上げに
後はシェル化して
-
NoteNo
を外部ファイルから読ませダウンロード -
SAPCAR
で展開 -
unzip
で展開
等とすれば、面倒なSAPNETなしのNote適用も少しは楽になるかも。。。
※くれぐれもクライアント証明書の管理には注意を払うこと。