さくらのウェブアクセサレータにAPIを利用してSSL証明書を登録する

本サイトは さくらのウェブアクセサレータ + Amazon Lightsail 構成。
SSL証明書の更新を忘れがちなので、API経由で更新できるか試してみた。
さくらウェブアクセラレータで使うドメインのSSL証明書更新を参考にしている。
Let’s Encryptで証明書取得した後の設定について記載する。

APIキーの取得

API管理ページから、APIキーを作成する。

IDの取得

# curl -s -X GET --user "アクセストークン":"トークンシークレット" https://secure.sakura.ad.jp/cloud/zone/is1a/api/webaccel/1.0/site | jq
{
  "Total": 1,
  "From": 0,
  "Count": 1,
  "CountLimit": 20,
  "Sites": [
    {
      "Index": 0,
      "ID": "xxxxxxxxxxxx",
      "Name": "tech.akat.info",
      "Domain": "tech.akat.info",
      "DomainType": "own_domain",
      "Subdomain": "6g89bvml.user.webaccel.jp",
      "ASCIIDomain": "tech.akat.info",
      "OriginProtocol": "https",
      "RequestProtocol": "2",
      "Origin": "x.x.x.x",
      "HostHeader": "tech.akat.info",
      "Status": "enabled",
      "OriginGuardToken": "",
      "NextOriginGuardToken": "",
      "DefaultCacheTTL": -1,
      "CreatedAt": "2019-03-25T03:15:42+09:00",
      "HasCertificate": true,
      "HasOldCertificate": true,
      "GibSentInLastWeek": 0,
      "CertValidNotBefore": "1584723561000",
      "CertValidNotAfter": "1592499561000"
    }
  ],
  "is_ok": true
}

証明書を登録する

# curl -s -X PUT --user "アクセストークン":"トークンシークレット" https://secure.sakura.ad.jp/cloud/zone/is1a/api/webaccel/1.0/site/xxxxxxxxxxxx/certificate -d "{\"Certificate\": { \"CertificateChain\": \"$(perl -pe 's/\n/\\n/' /etc/letsencrypt/live/tech.akat.info/fullchain.pem | perl -pe 's/\\n$//')\", \"Key\": \"$(perl -pe 's/\n/\\n/' /etc/letsencrypt/live/tech.akat.info/privkey.pem | perl -pe 's/\\n$//')\" }}"