###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 12-001_鍵情報/鍵情報コンテナの登録 # # 内容: # 鍵情報の登録及び鍵情報コンテナの登録の手順です。 # # 版数:v1.0 # 更新日:2017/10/19 ###################################################################### 手順: ─────────────────────────────────── 項番1.鍵情報登録 項番1-1.秘密鍵登録 項番1-2.証明書登録 項番1-3.鍵情報確認 項番2.鍵情報コンテナ作成 項番3.鍵情報コンテナ確認 参考1.鍵情報コンテナ削除 参考2.鍵情報削除 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・秘密鍵 ・証明書 ─────────────────────────────────── 注意事項: ・準備する鍵情報はPEM形式の鍵情報を用意してください。 ・本サンプルでは秘密鍵・証明書の鍵情報登録手順を記載しています。 項番1.鍵情報登録 事前に準備した秘密鍵・証明書の鍵情報を登録し、登録できたことを 確認します。 項番1-1.秘密鍵登録 事前に準備した秘密鍵の鍵情報を登録します。 以下のAPI実行コマンド例の「"payload":"<鍵情報>"」に登録する秘密鍵の 鍵情報を記載した上で、API実行コマンドを実行してください。 ※「-----BEGIN PRIVATE KEY-----」から「-----END PRIVATE KEY-----」 までの情報を記載してください。 注意事項: ・準備する鍵情報はPEM形式の鍵情報を用意してください。 ・ペイロードを指定する場合、空の文字の指定はできません。改行を エスケープする場合は、"\n"(バックスラッシュ)を利用してください。 ・登録する鍵情報の有効期限が過ぎた場合は、自動的に削除されます。 鍵情報の有効期限を省略した場合は"null"が設定され、自動で削除 されることはありません。 環境定義コマンド例: ====================================================================== # KEY_NAME=<登録する秘密鍵名> KEY_NAME=TEST_PRIVATE_KEY01 # EXPIRATION=<登録する秘密鍵の有効期限(「YYYY-MM-DDThh:mm:ss.SSSSSS」 # の形式で指定)> EXPIRATION="2027-11-09T09:11:51.392623" # CONTENT_TYPE=<ペイロードのコンテンツタイプ(「text/plain」を指定)> CONTENT_TYPE=text/plain API実行コマンド例: ====================================================================== curl -Ss -i $KEYMANAGEMENT/v1/$PROJECT_ID/secrets -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"name":"'$KEY_NAME'", "expiration": "'$EXPIRATION'", "payload": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADADBgkqhkiG9w0PAQEFAASCBKcwgdSjAgEAAoIBAQDnF8tdlbo1jfKG\npaZe.....中略.....xSkiv\nePayi2J4xeeeZUljZMXZ4qD/Fz2elgx3MWiyzxCj81HyoIaNqopuOHWQgTnLpRVO\njgLKVcifZ+dH2tiauOEsklM=\n-----END PRIVATE KEY-----", "payload_content_type": "'$CONTENT_TYPE'" }' レスポンス例: ====================================================================== HTTP/1.1 100 Continue HTTP/1.1 201 Created X-Fcx-Endpoint-Request: EXECUTED_REQ003075152_201 Location: /<プロジェクトID>/secrets/0ec85c37-8b34-403f-ab74-73031b1eq84n Content-Type: application/json;charset=UTF-8 Content-Length: 155 Date: Mon, 11 Sep 2017 10:05:07 GMT {"secret_ref": "https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/secrets/0ec85c37-8b34-403f-ab74-73031b1eq84n"} ====================================================================== 項番1-2.証明書登録 事前に準備した証明書の鍵情報を登録します。 以下のAPI実行コマンド例の「"payload":"<鍵情報>"」に登録する証明書の 鍵情報を記載した上で、API実行コマンドを実行してください。 ※「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」 までの情報を記載してください。 注意事項: ・準備する鍵情報はPEM形式の鍵情報を用意してください。 ・ペイロードを指定する場合、空の文字の指定はできません。改行を エスケープする場合は、"\n"(バックスラッシュ)を利用してください。 ・登録する鍵情報の有効期限が過ぎた場合は、自動的に削除されます。 鍵情報の有効期限を省略した場合は"null"が設定され、自動で削除 されることはありません。 環境定義コマンド例: ====================================================================== # KEY_NAME=<登録する証明書名> KEY_NAME=TEST_CERTIFICATE01 # EXPIRATION=<登録する証明書の有効期限(「YYYY-MM-DDThh:mm:ss.SSSSSS」 # の形式で指定)> EXPIRATION="2027-11-09T09:11:51.392623" # CONTENT_TYPE=<ペイロードのコンテンツタイプ(「text/plain」を指定)> CONTENT_TYPE=text/plain API実行コマンド例: ====================================================================== curl -Ss -i $KEYMANAGEMENT/v1/$PROJECT_ID/secrets -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"name":"'$KEY_NAME'", "expiration": "'$EXPIRATION'", "payload": "-----BEGIN CERTIFICATE-----\nMIIDMzVCAhumAwIBAgIBATAFBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRURVNU\nMB4X.....中略.....rZqHk\n2xWyoVZPd4IpT8mGOR1vvwPlACNgh4zuJ4BMs0ax5v6Diokyrw1ZnNK+5L8lkYVZ\nRRaWXsE4Gb2WrS5Euucr6UWfYTBlWznn+BeuflPRRlKODuP4SWUFMpkBVXVyAvc+\nWNgxBMYJ4Q==\n-----END CERTIFICATE-----", "payload_content_type": "'$CONTENT_TYPE'" }' レスポンス例: ====================================================================== HTTP/1.1 100 Continue HTTP/1.1 201 Created X-Fcx-Endpoint-Request: EXECUTED_REQ003050926_201 Location: /<プロジェクトID>/secrets/9faa7280-3eda-4929-a0f5-f57bad718y64 Content-Type: application/json;charset=UTF-8 Content-Length: 155 Date: Mon, 11 Sep 2017 10:14:45 GMT {"secret_ref": "https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/secrets/9faa7280-3eda-4929-a0f5-f57bad718y64"} ====================================================================== 項番1-3.鍵情報確認 秘密鍵、証明書の鍵情報が登録されたこと確認します。 「"secret_ref"」に記載されている情報が、各鍵情報のURIとなります。 API実行コマンド例: ====================================================================== curl -Ss $KEYMANAGEMENT/v1/$PROJECT_ID/secrets -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "total": 2, "secrets": [ { "expiration": "2027-11-09T09:11:51.392623", "bit_length": null, "status": "ACTIVE", "secret_ref": "https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/secrets/0ec85c37-8b34-403f-ab74-73031b1eq84n", "updated": "2017-09-11T10:05:07.318502", "name": "TEST_PRIVATE_KEY01", "algorithm": null, "created": "2017-09-11T10:05:07.281404", "content_types": { "default": "text/plain" }, "mode": null }, { "expiration": "2027-11-09T09:11:51.392623", "bit_length": null, "status": "ACTIVE", "secret_ref": "https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/secrets/9faa7280-3eda-4929-a0f5-f57bad718y64", "updated": "2017-09-11T10:14:44.913828", "name": "TEST_CERTIFICATE01", "algorithm": null, "created": "2017-09-11T10:14:44.884317", "content_types": { "default": "text/plain" }, "mode": null } ] } ====================================================================== 項番2.鍵情報コンテナ作成 鍵情報コンテナを作成し、登録した鍵情報を鍵情報コンテナに登録します。 「項番1-3」で確認した「"secret_ref"」に記載されている情報が、 各鍵情報のURIとなります。 環境定義コマンド例: ====================================================================== # CONTAINER_NAME=<作成する鍵情報コンテナ名> CONTAINER_NAME=TEST_CONTAINER01 # TYPE=<鍵情報コンテナタイプ(「certificate」「generic」を指定)> TYPE=certificate # PRIVATE_KEY_NAME=<鍵情報コンテナに登録する鍵情報名(「private_key」 # を指定)> PRIVATE_KEY_NAME=private_key # PRIVATE_KEY_URL=<登録した秘密鍵の"secret_ref"情報> PRIVATE_KEY_URL="https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/secrets/0ec85c37-8b34-403f-ab74-73031b1eq84n" # CERT_NAME=<鍵情報コンテナに登録する鍵情報名(「certificate」を指定)> CERT_NAME=certificate # CERT_URL=<登録した証明書の"secret_ref"情報> CERT_URL="https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/secrets/9faa7280-3eda-4929-a0f5-f57bad718y64" API実行コマンド例: ====================================================================== curl -Ss -i $KEYMANAGEMENT/v1/$PROJECT_ID/containers -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"name":"'$CONTAINER_NAME'", "type": "'$TYPE'", "secret_refs": [{"name": "'$PRIVATE_KEY_NAME'", "secret_ref": "'$PRIVATE_KEY_URL'"}, {"name": "'$CERT_NAME'", "secret_ref": "'$CERT_URL'"}] }' レスポンス例: ====================================================================== HTTP/1.1 201 Created X-Fcx-Endpoint-Request: EXECUTED_REQ003051062_201 Location: /<プロジェクトID>/containers/1964f415-6a5a-4716-bf95-c42bc77t3985 Content-Type: application/json;charset=UTF-8 Content-Length: 161 Date: Mon, 11 Sep 2017 10:27:46 GMT {"container_ref": "https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/containers/1964f415-6a5a-4716-bf95-c42bc77t3985"} ====================================================================== 項番3.鍵情報コンテナ確認 秘密鍵、証明書の鍵情報が鍵情報コンテナに登録されたこと確認します。 「"secret_refs"」に各鍵情報が記載されていることを確認します。 「"secret_refs":[{"secret_id"]」が各鍵情報のIDになります。 API実行コマンド例: ====================================================================== curl -Ss $KEYMANAGEMENT/v1/$PROJECT_ID/containers -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" | jq . レスポンス例: ====================================================================== { "containers": [ { "type": "certificate", "container_ref": "https://keymanagement.jp-west-2.cloud.global.fujitsu.com/v1/<プロジェクトID>/containers/1964f415-6a5a-4716-bf95-c42bc77t3985", "created": "2017-09-11T10:27:46.292234", "secret_refs": [ { "name": "private_key", "secret_id": "0ec85c37-8b34-403f-ab74-73031b1eq84n" }, { "name": "certificate", "secret_id": "9faa7280-3eda-4929-a0f5-f57bad718y64" } ], "name": "TEST_CONTAINER01", "updated": "2017-09-11T10:27:46.292245", "status": "ACTIVE" } ], "total": 1 } ====================================================================== 参考1.鍵情報コンテナ削除 作成した鍵情報コンテナを削除します。 削除のAPI実行コマンドを実行後に、「項番3」の確認APIを実行し鍵情報 コンテナが削除されたことを確認してください。 環境定義コマンド例: ====================================================================== # TMP_CONTAINER_ID=<削除する鍵情報コンテナID> TMP_CONTAINER_ID=1964f415-6a5a-4716-bf95-c42bc77t3985 API実行コマンド例: ====================================================================== curl -Ss -i $KEYMANAGEMENT/v1/$PROJECT_ID/containers/$TMP_CONTAINER_ID -X DELETE -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type: application/json" レスポンス例: ====================================================================== HTTP/1.1 204 No Content X-Fcx-Endpoint-Request: EXECUTED_REQ003156577_204 Date: Tue, 12 Sep 2017 07:30:34 GMT ====================================================================== 参考2.鍵情報削除 作成した鍵情報を削除します。 削除のAPI実行コマンドを実行後に、「項番1-3」の確認APIを実行し 鍵情報が削除されたことを確認してください。 環境定義コマンド例: ====================================================================== # TMP_KEY_ID=<削除する鍵情報ID> TMP_KEY_ID=0ec85c37-8b34-403f-ab74-73031b1eq84n API実行コマンド例: ====================================================================== curl -Ss -i $KEYMANAGEMENT/v1/$PROJECT_ID/secrets/$TMP_KEY_ID -X DELETE -H "X-Auth-Token: $OS_AUTH_TOKEN" レスポンス例: ====================================================================== HTTP/1.1 204 No Content X-Fcx-Endpoint-Request: EXECUTED_REQ003094311_204 Date: Tue, 12 Sep 2017 07:40:54 GMT ====================================================================== 以上