まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

p12ファイルを証明書と秘密鍵に分割する

p12ファイルって

PKCS#12 個人情報交換ファイルフォーマットというもの。証明書と秘密鍵をセットにできる。iOS開発とかやってるとよく出てくるやつです。

APNsの設定するのにp12を証明書と秘密鍵に分割したい

証明書を取り出すのはkeytoolというJDKに入ってるコマンドでできるみたいです。 秘密鍵はopensslコマンドで取り出せます。

これはsh直下にあるp12を全部証明書と秘密鍵に分割してbase64でstdoutするコードです。こんな感じでできます。ALIASっていうのをとってくるのが微妙にめんどくさい。

#!/bin/bash -e

for f in *.p12; do
  ALIAS=$(keytool -list -v -keystore /$f -storepass "" | grep "Alias" | awk -F: '{print $2;}' | sed -e 's/^\s//g')
  echo $f alias:$ALIAS
  rm -f temp.crt cer.pem key.pem

  keytool -exportcert -keystore /$f \
    -storetype PKCS12 \
    -storepass "" \
    -alias "$ALIAS" \
    -file temp.crt

  openssl x509 -in temp.crt -inform DER -out cer.pem -outform PEM
  echo "* $f base64 cer.pem"
  base64 -w 0 cer.pem && echo
  echo "* $f base64 key.pem"
  openssl pkcs12 -in $f -out key.pem -nodes -clcerts -password pass:""
  base64 -w 0 key.pem && echo
  echo
  echo
done

というようなことをもちろんDockerで実行できるようにしておく

Dockerfile

FROM java

COPY *.p12 /
COPY run.sh run.sh
RUN chmod +x run.sh

CMD ./run.sh

run.shの中身

IMAGE=pem-converter

build:
  docker build -t ${IMAGE} .

create:
  docker run -it ${IMAGE}