Azure Key Vault で自己署名なCA証明書を作りたい

表題の通り。AzureポータルやCLIなどから作ると自己署名な証明書は簡単に作れますが、CA証明書として必要なプロパティは設定できないようでした。具体的には X509v3 Basic Constraints の CAフラグがTRUEになった状態のものを簡単に作れないという感じです。

解決策ですが、今のところAzure Key VaultのREST APIをたたいて必要なプロパティを設定したJSONで証明書を作る、という感じです。わぁ。

書いてる通り、証明書作成用APIに投げるJson本文にbasic_constraintsプロパティを追加します。それ以外のパラメーターはドキュメント見ながら埋めてください。key_usageとかはこのへん参考に。実際になげたJSON本文は以下のような感じになりました。

{
  "policy": {
    "key_props": {
      "exportable": true,
      "kty": "RSA",
      "key_size": 2048,
      "reuse_key": false
    },
    "secret_props": {
      "contentType": "application/x-pkcs12"
    },
    "x509_props": {
      "subject": "CN=ca.azure.moe",
      "key_usage": [
         "KeyCertSign",
         "crlsign",
         "DigitalSignature",
         "KeyEncipherment"
      ],
      "basic_constraints": {
          "ca": true,
          "path_len_constraint": 3
      },
      "validity_months": 1200
    },
    "issuer": {
      "name": "Self"
    }
  }
}

さて生なREST APIって投げるの面倒なので、今回はAzure Cloud Shell上でaz rest コマンドを使います。

az rest --method post --url "https://YOURKEYVAULT.vault.azure.net/certificates/YOURCERTNAME/create?api-version=7.2" --resource "https://vault.azure.net" --body "{\"policy\":{\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application\/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=ca.azure.moe\",\"key_usage\":[\"KeyCertSign\",\"crlsign\",\"DigitalSignature\",\"KeyEncipherment\"],\"basic_constraints\":{\"ca\":true,\"path_len_constraint\":3},\"validity_months\":1200},\"issuer\":{\"name\":\"Self\"}}}"

できあがった証明書を見るとちゃんとCA用として設定されてます。

これでopensslコマンドとかでサーバー証明書作っても変な感じにはならないはず…

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中