SAML や各種設定で PEM 形式の証明書や秘密鍵を扱う際、改行を含んだままでは正しく処理できない場面があります。
そのため、BEGIN/END 行を除外し、Base64 部分だけを改行なしの 1 行に整形する必要があります。
以下では、どの Linux 環境でも安定して動作する awk を用いた方法をご紹介します。
証明書(.crt)を 1 行に整形する方法
PEM 形式の証明書は次のような構造になっています。
-----BEGIN CERTIFICATE-----
複数行の Base64
-----END CERTIFICATE-----このうち、BEGIN と END の行を除外し、Base64 のみを 1 行にするには、以下のコマンドを使用します。
awk '!/-----BEGIN CERTIFICATE-----/ && !/-----END CERTIFICATE-----/ { printf "%s", $0 }' \
server.crt
echoprintf "%s" を使用することで、元の改行をすべて無視して連続した1行の文字列として出力します。最後に echo を追加することで、末尾に 1 つだけ改行を付与しています。
秘密鍵(.key)を 1 行に整形する方法
秘密鍵も同様に PEM 形式のため、BEGIN/END 行を除外するだけで同じ処理が可能です。
-----BEGIN PRIVATE KEY-----
複数行の Base64
-----END PRIVATE KEY-----整形コマンドは以下のとおりです。
awk '!/-----BEGIN PRIVATE KEY-----/ && !/-----END PRIVATE KEY-----/ { printf "%s", $0 }' \
server.key
echoまとめ
- PEM 形式の証明書や秘密鍵を1行にまとめる際は、
awkを使うと安定して処理できます。 - BEGIN と END の行を除外し、Base64 部分を
printfで連結することで1行化できます。
PEM 形式の証明書・秘密鍵を 1 行に整形する方法

