SAP
BASIS

SAP Note を wget でダウンロードする。

はじめに

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

仕上げに

後はシェル化して
1. NoteNo を外部ファイルから読ませダウンロード
2. SAPCAR で展開
3. unzip で展開

等とすれば、面倒なSAPNETなしのNote適用も少しは楽になるかも。。。

※くれぐれもクライアント証明書の管理には注意を払うこと。