[Mac]https化したサイトでXML-RPCを使うために、プライベート認証局でSSLクライアント証明書を発行する

 

Google+の投稿を自動でWordPressに投稿するスクリプトが動かなくなってしまった。

上の記事を受けての記事。

サイトがSSL化している場合、XML-RPCを使うにはクライアントもSSLに対応していないといけない場合があるらしい。
そのためには、プライベート認証局でSSLクライアント証明書を発行しなければならない。
ここのサイト曰く、クエリを投げるにはクライアントの証明書とクライアントの秘密鍵とそのパスフレーズ、CAの公開鍵証明書が必要らしいので、そいつらを生成する。

ちなみにこの時の環境は以下の通り。

  • macOS High Sierra (10.13.3)
  • LibreSSL 2.2.7

プライベート認証局(CA)の構築

openssl.cnfの準備

うちの環境では、/private/etc/ssl/openssl.cnfがデフォルトで使用される設定になっていたので、ここを書き換えた。
後述するが、適当なところにopenssl.cnfを作ってそれを使う方法もある。
当時はその方法がわからなかったのでデフォルトのものを書き換えた。

中身は以下のようにしてくれればとりあえず動くと思う。

構築

まず、/System/Library/OpenSSL/misc/CA.shを適当なところにコピーする。
ホームフォルダとかがいいかな。

そしてそのディレクトリで以下のコマンドを入力する。

ちなみに、以下のようにコマンドを打つとopenssl.confの場所を指定できる。

これで以下の二つのファイルができているはずだ(他にも色々生成されている)。

  • ./demoCA/private/cakey.pem
    CAの秘密鍵
  • ./demoCA/cacert.pem
    CAの公開鍵証明書(CAのcakey.pemで署名したもの)

クライアント用の証明書発行

クライアントの証明書作成

以下のようにコマンドを叩く。
もちろんSSLEAY_CONFIGで任意の場所のopenssl.confを使っていい。

これで以下のファイルが生成されているはずだ。

  • newkey.pem
    クライアントの秘密鍵
  • newreq.pem
    クライアントの署名なし公開鍵
    (証明書署名要求(CSR)でもある? これを第三者機関であるプライベートCAに審査してもらう感じ?)

署名入りのクライアントの証明書作成

以下のコマンドを入力。

これで以下のファイルが生成されているはずだ。

  • newcert.pem
    (CAの署名が入った)クライアントの証明書

クエリを投げる

PHPの場合、以下のようになる。

これで無事また自動投稿できるようになった。
めでたしめでたし。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

2 + 17 =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください